我的设置是一个 AuthorizationServer,我在其中针对 ldap 进行身份验证。 当我直接从授权服务器请求用户时 他有一个特定的权限,具体取决于 LDAP 组。
当我在调试时查看ResourceServer中的Oauth2Authentication时,只有userAuthentication.details.authorities具有此权限。任何其他权限都设置为 ROLE_USER。
是否可以使用AuthorizationServer提供的用户权限?
如果我使用 spring.oauth2.resource.tokenInfoUri 来检索权限,它就可以工作。但我想使用 AuthorizationServer 提供的 UserDetails..
最佳答案
解决方案是创建一个自定义 UserInfoTokenServices 并按照我在 answer to a very similar question 中的解释提供它。 .
在此 UserInfoTokenServices 中,我能够从授权服务器的 /users
端点的响应中提取权限。
!!更新!!有了 Spring Boot 1.4.0,事情变得更加容易!
使用 Spring Boot 1.4.0 a PrincipalExtractor被介绍了。应该实现此类来提取自定义主体(请参阅 Spring Boot 1.4 Release Notes )。
如果仅与当局有关,您可以实现 AuthoritiesExtractor .
关于java - Spring Oauth2 单点登录 : Use Authority granted by AuthorizationServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31323421/