具有 2 个资源服务器的 OAuth2 体系结构具有自己的不同范围
OAuth2 Architecture with 2 Resource Servers having their own Different Scopes
是否可以进行 OAuth2 设置,其中涉及中央 Auth 服务器和多个资源服务器具有自己的访问范围。例如 clientApp
使用 scope1,scope2
访问 resource-server-A
并访问具有访问范围 scope3 scope4
.
的 resource-server-B
虽然这可能是可行的,但我们如何在 clientApp
的授权时间内显示上述所有访问范围?是否有标准的 OAuth/open-id 方法来完成此操作?
绝对有可能。 RFC8707 - Resource Indicators for OAuth 2.0 标准化了许多授权服务器实施多年来采用的常见做法,以允许 OAuth 2.0 客户端指示他们打算在哪些资源服务器上使用访问令牌。
使用 RFC8707,您的客户端应用程序可以启动授权请求,例如
/authorization_endpoint?...&scope=scope1%20scope2%20scope3%20scope4%20&resource=urn:resource-server:A&resource=urn:resource-server:B
鉴于两个资源服务器都在 AS 上注册,AS 的工作是识别属于资源 A 的 scope1 和 scope2,等等。请注意,如果两个资源的范围值都被识别,则结果是所有资源的笛卡尔积所有目标服务的范围。
最好的做法是只为单个资源服务器提供访问令牌,并让资源参数也成为访问令牌请求的参数。将它与刷新令牌结合起来,您将获得一个刷新令牌,可以在您调用刷新令牌授权时一次为不同的资源颁发访问令牌。
是否可以进行 OAuth2 设置,其中涉及中央 Auth 服务器和多个资源服务器具有自己的访问范围。例如 clientApp
使用 scope1,scope2
访问 resource-server-A
并访问具有访问范围 scope3 scope4
.
resource-server-B
虽然这可能是可行的,但我们如何在 clientApp
的授权时间内显示上述所有访问范围?是否有标准的 OAuth/open-id 方法来完成此操作?
绝对有可能。 RFC8707 - Resource Indicators for OAuth 2.0 标准化了许多授权服务器实施多年来采用的常见做法,以允许 OAuth 2.0 客户端指示他们打算在哪些资源服务器上使用访问令牌。
使用 RFC8707,您的客户端应用程序可以启动授权请求,例如
/authorization_endpoint?...&scope=scope1%20scope2%20scope3%20scope4%20&resource=urn:resource-server:A&resource=urn:resource-server:B
鉴于两个资源服务器都在 AS 上注册,AS 的工作是识别属于资源 A 的 scope1 和 scope2,等等。请注意,如果两个资源的范围值都被识别,则结果是所有资源的笛卡尔积所有目标服务的范围。
最好的做法是只为单个资源服务器提供访问令牌,并让资源参数也成为访问令牌请求的参数。将它与刷新令牌结合起来,您将获得一个刷新令牌,可以在您调用刷新令牌授权时一次为不同的资源颁发访问令牌。