假设客户身份的超级用户应该遵循什么oauth模式



我在一家公司工作,我们为最终用户提供了标准JWT令牌。该用户将通过授权代码oauth流获得JWT访问令牌。通过将访问令牌传递到Authorization头中,他们可以调用微服务api。

我们现在有一种情况,我们需要客户服务中心的人员假设最终用户的身份,以便让服务中心代表在短时间内访问用户数据。

为了解决这个问题,我们讨论了让两个访问令牌流入微服务api的Authorization标头。第一个代表客户服务中心代表,第二个代表用户访问令牌,但我对如何最好地构建此解决方案感到困惑。

有人能推荐一个尽可能接近开放id连接标准的好解决方案吗。微软似乎有一个名为on behalf of的oauth流,它与我想要的有点匹配,但似乎更适合系统on behalf of一个用户,而我想要一个用户on behalf of另一个用户。

感谢

长期

用户管理访问可以提供这方面的解决方案:

  • 最终用户在授权服务器上为其个人资源设置策略
  • 公司管理员在授权服务器上为公司资源应用策略(针对多个用户(
  • 请求方(应用程序(提出索赔以证明其符合政策

真实世界

几乎没有授权服务器支持此功能,甚至那些支持此功能的授权服务器也可能无法执行您想要的操作。不过,它不仅仅是OAuth模式,因为解决方案还与后端行为相关。

我会怎么做

围绕索赔构建解决方案:

  • 服务中心用户登录,以建立自己的身份
  • 登录后,查找声明,查看用户是否具有"超级"权限
  • 如果是,您的UI将提供一个代表另一个用户执行操作的选项
  • 服务中心用户在电子邮件中键入他们的角色
  • 使用第二个身份更新索赔
  • 授权需要同时考虑两种身份
  • 审核需要记录两个身份

上面的列表提示了一些需求,当然并不是所有这些都可以用OAuth解决,但声明应该为您提供所需的灵活性。

请参阅我的索赔记录,了解如何应用此模式从多个地方收集索赔,而不仅仅是访问令牌。在您的情况下,ApiClaims对象可能包括两个用户的数据库用户ID。

最新更新