如何处理多个客户和角色?

How to handle multiple clients and roles?

我正在开发 OAuth 2.0 服务器以支持多个客户端和角色。

假设我有一个 API 服务器需要来自 OAuth 服务器的访问令牌。

这些工作流程是我想出来的。我为这个简单的工作流程提供了三个服务——OAuthClientAPI server.

  1. 每个客户端上的用户都有电子邮件和密码(这些凭据存储在 OAuth 服务器上)
  2. 用户在他们的客户端上使用他们的电子邮件和密码登录,然后客户端将凭据发送到 OAuth 服务器进行身份验证。
  3. OAuth 服务器检查凭据并颁发访问令牌。
  4. 当用户向 API 服务器请求请求时,API 服务器与 OAuth 服务器通信以查看用户是否有权访问该资源。如果是这样,执行请求然后 return 东西。

在我看来,这是一种不寻常的工作流程。我想这样做的原因是因为我们实际上将用户凭据存储在我们的 OAuth 服务器上。每个客户我也有多个角色(组)。

这是 OKAY 解决方法还是对于一个 OAuth + 多个客户端和多个角色是否有更好的方法?

您所描述的相当于 OAuth 2.0 中的资源所有者密码凭证授予,请参阅:https://www.rfc-editor.org/rfc/rfc6749#section-1.3.3。您应该能够使用支持此授权的库存 OAuth 2.0 授权服务器来执行此操作。所以它并不罕见或专有,但需要对客户端有很大的信任,因为它“看到”了密码。

您可以将多个角色和组表示为与访问令牌相关联的不同“范围”,从而为客户端建模。