Oauth 2.0 如何处理多个客户端和角色?
我正在使用OAuth2.0服务器来支持多个客户端和角色 假设我有一个API服务器,它需要来自OAuth服务器的访问令牌 我想出的这些工作流程。对于这个简单的工作流,我有三个服务--OAuth、客户端和API服务器Oauth 2.0 如何处理多个客户端和角色?,oauth-2.0,acl,Oauth 2.0,Acl,我正在使用OAuth2.0服务器来支持多个客户端和角色 假设我有一个API服务器,它需要来自OAuth服务器的访问令牌 我想出的这些工作流程。对于这个简单的工作流,我有三个服务--OAuth、客户端和API服务器 每个客户端上的用户都有电子邮件和密码(这些凭据存储在OAuth服务器上) 用户在其客户端上使用电子邮件和密码登录,然后客户端将凭据发送到OAuth服务器进行身份验证 OAuth服务器检查凭据并发出访问令牌 当用户向API服务器请求请求时,API服务器会与OAuth服务器对话,以查看用户
这是一种可行的解决方法,还是一个OAuth+多个客户端和多个角色有更好的方法?您所描述的与OAuth 2.0中的资源所有者密码凭据授予等效,请参阅:。您应该能够使用支持此授权的股票OAuth 2.0授权服务器来执行此操作。因此,它不是不寻常的或专有的,但需要对客户端有很大的信任,因为它“看到”了密码
您可以通过将多个角色和组表示为与访问令牌关联的不同“作用域”,从而对其进行建模。谢谢Hans Z。我看到的问题是,客户端应用程序必须知道或管理其端的作用域。例如,管理员用户“test@test.com“尝试登录,我应该请求什么范围?”?为了知道请求什么,客户端应用程序应该知道用户组(或角色),但我真的不想这样做。我想我可以使用用户凭据授予来颁发访问令牌,然后在用户实际请求某些内容时检查作用域。客户端不需要知道作用域,尤其是在资源所有者密码凭据授予中。在任何情况下,您都不需要显式地请求作用域,您还可以将您想要的任何作用域与授权服务器上的访问令牌相关联。然后,客户端甚至可能根本不知道作用域:它只是获取一个访问令牌,并根据底层权限/角色(通常是资源所有者权限/角色的派生集)使用它来决定成功或失败。谢谢Hans Z。我认为这是迄今为止处理它的最佳方法。