具有多个资源服务器的 OAuth 2.0 身份验证服务器

OAuth 2.0 Authentication Server with multiple Resource Servers

我正在尝试在我们的 API 中实施 oauth2 而不是基本身份验证。

我构建了一个身份验证服务器并实现了访问令牌 在 API #1 和 API 服务器 #2 中验证。

所以我的问题是,oauth2 如何处理多个 API?

目前我可以通过一个 access_token 访问所有 API,但我想这不应该是...,或者我误解了什么?

而且我不确定 scopes 参数,这更像是一个权限问题,并没有指定应该向哪个 api 颁发访问令牌。

假设您使用单个授权服务器,范围概念允许您处理此问题:您可以为每个 API 定义一个范围,并让客户端请求一个或两个范围。颁发与多个范围关联的访问令牌(即您的情况下的 APIs)是完全有效且实用的 OAuth 2.0。

访问令牌是基于每个客户端颁发的,因此向同一客户端分发不同的访问令牌不会给您带来任何安全优势,除非两个 API 由不同的实体控制。在任何情况下,客户端都必须改变它请求它们的方式,这将再次使用范围来完成。