首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IdentityServer4 -如何实现模拟

IdentityServer4 -如何实现模拟
EN

Stack Overflow用户
提问于 2017-08-07 14:50:25
回答 3查看 5.3K关注 0票数 14

我有一个要求,允许我们的内部支持用户模拟我们的客户用户。

我目前正在使用IdentityServer4、隐式流和OIDC客户端。

到目前为止发现的资源。

鉴于在线资源有限,对于如何使用IdentityServer4实现模拟,有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2020-02-19 17:50:10

如何做到这一点

IdentityServer4没有指定任何身份验证提供程序。它只是作为一个本身为其他OIDC客户端。这就是为什么你可以使用第三方登录提供者,本地帐户和其他任何东西。

在您的ImpersonationController中创建一个IdentityServer。确保只有管理员才能访问此页面。

代码语言:javascript
复制
[Authorize(Policy = "CanImpersonate")]

构建一个管理员想要模拟的页面,您可以在其中输入一个用户ID。当使用预期的用户ID发布该表单时,请使用SignInManager<>类在当前用户中签名。

您甚至可以构建一个下拉列表,如果这对您很重要,那么您想要模拟的外部登录提供程序。使用ExternalLoginSignInAsync方法,否则使用普通的SignInAsync(user, false)方法。

然后,您已经在Identity Server上注册为该用户。当您的客户端应用程序请求登录时,IdentityServer将注意到您的“伪造”会话,并将重新定向回客户端,立即使用您当前已签名的帐户。

您现在正在客户端应用程序和IdentityServer上模拟该用户。

如果您在SignOut on IdentityServer上,您将再次“升级”到您以前登录的帐户(如果仍然以不同的身份登录),或者需要再次以实际管理员帐户的身份登录。

你需要小心的东西

副作用

这显然是一个值得辩论的话题。我假设您想要添加这个特性,这样您就可以复制用户问题,或者作为用户执行一些操作。

如果您在用户不知道的情况下执行此操作,请非常小心在模拟过程中所做的任何操作的副作用。是发电子邮件还是类似的通知。

沿着这条路走下去会失去很多人的信任。

这也是对隐私的关注。谁能接触到细节。在您的平台上冒充用户时,会披露哪些细节。

一项建议

不要冒充用户。

实现一种受控的方式,您的管理员可以在其中执行所需的工作。然后,您有一个一致的审计日志,无论用户登录到您的系统中做什么,您都可以确定是该用户,而不是您的管理员冒充该帐户。

票数 4
EN

Stack Overflow用户

发布于 2017-08-07 19:36:24

可能不会尝试将模拟特性构建到核心IdentityServer4库中。您确实需要一个小的数据结构来保存您模拟的UserId,并需要一个服务来检查它。这是一个基础功能,您的应用程序应该围绕。

另外,您可能需要超级用户特性,即使您是在冒充(例如,非模拟的),但它们仍然存在。

票数 0
EN

Stack Overflow用户

发布于 2020-02-25 11:31:56

您可以以自己的方式实现IResourceOwnerValidation并验证您的支持用户。例如,为特定用户生成代码并将其提供给支持用户,然后在实现中也使用该代码检查您的密码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45549824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档