ioc*_*tos 10 security spring-security oauth-2.0 spring-oauth2
实施不可知的讨论.
我假设当用户使用auth服务器进行身份验证时,客户端已获得访问令牌.选择哪个流(隐式,授权代码,密码)是无关紧要的.我想从客户端已经获得访问令牌的角度开始讨论.
从那时起,我很清楚当客户端需要访问单个资源服务器时会发生什么.
因此,在该图中,如果客户端要访问"StandAlone Service"(它不与任何其他资源服务器通信),那么流程对我来说很清楚.
当客户端跟随图中的红线时,我遇到了麻烦.所以我需要访问一个服务(资源服务器),以便回复需要访问另一个服务(也是资源服务器).在这种情况下,流程如何?
场景1.
我认为这里的问题是我放弃了用户权限.我将使用"订单服务"权限而不是用户的权限执行对"数据服务"的请求.
情景2.
在这里,我执行用户的权限,但现在我看到我的"数据服务"已公开,并对任何其他服务开放.(实际上我不知道oauth2是否提供了这样的限制.仅将客户端限制为特定的资源服务器)
场景3.
在这里,我看到了上述场景的组合,其中"订单服务"将为数据服务提供两种令牌.用户访问令牌,以便使用正确的权限和"订单服务"客户端访问令牌执行请求,以便我知道该服务可以与"数据服务"通信.
履行
我正在使用spring boot和spring security来设置我上面看到的oauth2组件.我已经有一个auth服务器,一个资源服务器和一个客户端.客户端此时与资源服务器进行通信,而不会将请求委托给另一个资源服务器.
根据最佳方法,我将如何进入实施方面?我需要对资源服务器进行哪些更改才能使它们能够安全地相互通信?
感谢您的时间
您正在混合授权和身份概念。
oauth2 角色(resource owner、resource server和)是角色而不是身份authorization server。client您的订单服务resource server在一种场景中扮演角色,client在另一种场景中扮演角色。
场景 1 是正确的方法。
Oauth2 令牌确实与某些资源标识符相关联,因此将客户端限制为特定资源是一项内置功能。
scope使用 Oauth2概念处理客户端相关的授权集
如果您想在请求流中传播最终用户身份,则必须在流中传播身份令牌(例如 JWT)(请参阅OIDC)。然而,处理最终用户授权可能不是数据服务的责任。
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |