Oauth 2.0 OAuth2体系结构,两个资源服务器具有各自不同的作用域
是否可能有一个OAuth2设置,包括一个中央身份验证服务器和多个具有自己访问范围的资源服务器。例如Oauth 2.0 OAuth2体系结构,两个资源服务器具有各自不同的作用域,oauth-2.0,oauth,openid-connect,Oauth 2.0,Oauth,Openid Connect,是否可能有一个OAuth2设置,包括一个中央身份验证服务器和多个具有自己访问范围的资源服务器。例如clientApp访问resource-server-A,访问范围为scope1、scope2,访问resource-server-B访问范围为scope3、scope4 虽然这是可能的,但在clientApp的授权期间,我们如何显示所有上述访问范围?有没有一种标准的OAuth/open id方法可以实现这一点?这是绝对可能的。将多年来许多授权服务器实现采用的常见做法标准化,以允许OAuth 2.0
clientApp
访问resource-server-A
,访问范围为scope1、scope2
,访问resource-server-B
访问范围为scope3、scope4
虽然这是可能的,但在
clientApp
的授权期间,我们如何显示所有上述访问范围?有没有一种标准的OAuth/open id方法可以实现这一点?这是绝对可能的。将多年来许多授权服务器实现采用的常见做法标准化,以允许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等。请注意,如果两个资源都识别了一个scope值,则结果是所有目标服务的所有作用域的笛卡尔积
最好的做法是仅为单个资源服务器提供访问令牌,并允许资源参数随后也成为访问令牌请求的参数。将其与刷新令牌相结合,您将获得一个有效的刷新令牌,以便在调用刷新令牌授权时,同时为不同的资源颁发访问令牌。谢谢Filip,这正是我想要的。下面我可以问一个问题,在我们当前的方法中,
auth-server
无法存储resource-server-B
的作用域,但它知道resource-server-B本身。身份验证服务器是否有方法调用resource-server-B的端点以获取其作用域?也许我把事情弄复杂了。目前ASR的谈判或发现还没有标准。