作为管理员,代表另一个用户获取访问令牌
As administrator, get access token on behalf of another user
我正在尝试实施 IdentityServer4。当我们是管理员时,我们需要以其他用户身份登录的功能。
我已经为普通用户设置了登录功能,但我想要一个特定的端点,管理员可以在其中输入普通用户的 username/id。
如何在 IdentityServer4 以及常规的 oauth2 中实现这一点?
这超出了 OIDC/OAuth2 交互的范围,但是对于如何在结果中表示这种情况有一些约定 token/claims。阅读 https://www.rfc-editor.org/rfc/rfc8693(尤其是 act
声明部分)以获得一些灵感。
我们通过登录 UI 流程完成此操作,但模型是用户可以明确授予其他用户模拟权限。如果在登录时您获得了有效的模拟授权,那么作为登录流程的一部分,系统会提示您选择不同的帐户或以您自己的身份继续。在您的情况下,您可以识别管理员用户并让他们选择冒充您喜欢的任何人。
如果用户选择了一个模仿者,那么它将更改当前会话以代表该用户,但也会在演员声明 (act
) 中存储与原始 user/session 相关的声明,并添加一个amr
imp
的声明。然后我们将这些声明提供给客户,以便他们知道使用模拟的事实,然后可以将该信息添加到审计日志等。我们还通过电子邮件通知被模拟的用户并限制对帐户设置的访问 - 即模仿者只能以其他用户的身份登录客户端,他们不能更改他们的帐户设置。
我正在尝试实施 IdentityServer4。当我们是管理员时,我们需要以其他用户身份登录的功能。
我已经为普通用户设置了登录功能,但我想要一个特定的端点,管理员可以在其中输入普通用户的 username/id。
如何在 IdentityServer4 以及常规的 oauth2 中实现这一点?
这超出了 OIDC/OAuth2 交互的范围,但是对于如何在结果中表示这种情况有一些约定 token/claims。阅读 https://www.rfc-editor.org/rfc/rfc8693(尤其是 act
声明部分)以获得一些灵感。
我们通过登录 UI 流程完成此操作,但模型是用户可以明确授予其他用户模拟权限。如果在登录时您获得了有效的模拟授权,那么作为登录流程的一部分,系统会提示您选择不同的帐户或以您自己的身份继续。在您的情况下,您可以识别管理员用户并让他们选择冒充您喜欢的任何人。
如果用户选择了一个模仿者,那么它将更改当前会话以代表该用户,但也会在演员声明 (act
) 中存储与原始 user/session 相关的声明,并添加一个amr
imp
的声明。然后我们将这些声明提供给客户,以便他们知道使用模拟的事实,然后可以将该信息添加到审计日志等。我们还通过电子邮件通知被模拟的用户并限制对帐户设置的访问 - 即模仿者只能以其他用户的身份登录客户端,他们不能更改他们的帐户设置。