出于支持目的使用 OAuth and/or Auth0 将 Web 应用验证为另一个用户

Authenticate web app as another user for support purposes using OAuth and/or Auth0

是否有任何方法允许某些用户(可能具有 admin 角色和适当的权限)将 React 应用程序作为另一个用户进行身份验证?

用例是允许支持人员作为另一个用户进行身份验证,以查看他们看到的应用程序,并调试或帮助用户解决他们的问题。

谢谢!

这是一个很好的问题,也是一个普遍的要求,但遗憾的是可能难以实施。最终,虽然这种类型的解决方案总是在 API 秒内涉及索赔和工作。

OAUTH 标准

值得关注 On Behalf Of Flow 等不断发展的标准,看看它们是否能提供帮助。但是,它们可能无法满足您的要求或尚未得到您的供应商的支持。

身份验证

支持用户 'signing in as a business user' 不太对,因为用户总是使用自己的凭据登录。在正常情况下,这可能需要一个包含这些声明的访问令牌,并且用户只有在他们的令牌包含此范围时才能更改订单:

  • 主题:businessUser1
  • 角色:客户
  • 范围:openid 订单

模仿

在模拟情况下,支持人员将使用自己的凭据登录,然后可能会收到包含这些声明的访问令牌。您也许可以使用这些声明仅允许支持用户执行某些操作:

  • 主题:supportUser1
  • 作用:支持
  • can_impersonate: 真
  • 范围:openid 订单

理想情况下,在身份验证/令牌颁发时提示用户 'can_impersonate' 声明会很好。这将涉及弹出一个可以输入业务用户的屏幕,然后将其包含在访问令牌中并进行审核。

可扩展性

虽然这通常需要 custom authentication action,但在更高级的身份验证情况下通常需要它。如果您的提供商不支持此功能,那么您可能需要在您的应用中做更多的工作,例如:

  • 登录完成后调用屏幕
  • 将业务用户存储在您的 API 数据中
  • 也许还会审核您的 API 数据中的模拟事件

2022 年更新

最近在 Curity,我们发表了一些关于模仿的详细文章。任何想要实现此模式的人可能会发现它们很有用: