【问题标题】:How to implement impersonation in IdentityServer4如何在 IdentityServer4 中实现模拟
【发布时间】:2019-06-20 00:23:46
【问题描述】:

我想知道是否可以在 IdentityServer 4 中实现模拟,以及如何实现。 在我的研究中没有发现任何有用的东西,而且通过阅读 github 上的 IdentityServer4 pulls 似乎目前不可行。甚至搜索 OpenID Connect 和 Oauth2 的“模拟”,但什么都没有…… 无论如何,有人知道该怎么做吗? 提前致谢

【问题讨论】:

标签: oauth-2.0 identityserver4 openid-connect


【解决方案1】:

没有什么能阻止你自己实现它,但我认为除了通过声明表示模拟会话之外的任何东西都超出了协议的范围。

OIDC 本身不提供这方面的任何指导,但本规范草案提供:

https://datatracker.ietf.org/doc/html/draft-ietf-oauth-token-exchange-14#section-4.1

在我们的例子中,我们松散地遵循了这一点,并使用act 声明来存储与冒充者相关的声明,并使用amr 声明通过使用值imp 来指示是否使用了模拟。

关于谁可以模仿谁以及何时模仿的规则和流程完全取决于您。在我们的解决方案中,最终用户能够向特定用户授予模拟权限,但也可以通过客户控制的策略来锁定该设施。拥有有效模拟授权的用户可以在登录流程中获得额外的步骤,允许他们选择要模拟的用户。

【讨论】:

  • 非常感谢。我会阅读您提供的文档,并尝试找到一些解决方法。
  • 出于好奇,如果用户已经通过自己的身份验证,您是如何在远程站点中更新用户的令牌/会话的?例如如果用户已经通过 IdP 和 RP 进行了身份验证作为他们自己,并且他们现在想要模拟另一个用户,IdP 如何将更新后的access_token“推送”到 Front-Channel 客户端 -以及用户当前使用的所有其他前端渠道客户端?
  • @Dai 我实际上在切换模拟时触发了前后通道注销机制,因此任何下游客户端都会自动注销。会话 ID 也会更新,这意味着任何使用会话监控的客户端也会收到更改通知。
猜你喜欢
  • 2018-01-14
  • 2022-01-22
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多