我的设置是一个AuthorizationServer,我在其中对ldap进行身份验证。 当我直接从授权服务器请求用户时 他有一个特定的权限取决于ldap组。
当我在调试时查看ResourceServer中的Oauth2Authentication时,只有userAuthentication.details.authorities具有此权限。任何其他权限都设置为ROLE_USER。
是否可以使用AuthorizationServer提供的用户权限?
如果我使用spring.oauth2.resource.tokenInfoUri来检索权限,它就可以工作。但我想使用AuthorizationServer提供的UserDetails ..
答案 0 :(得分:0)
解决方案是创建一个自定义的UserInfoTokenServices,并按照answer to a very similar question中的解释提供它。
在这个UserInfoTokenServices中,我能够从授权服务器的/users
端点的响应中提取权限。
<强> !! UPDATE !!使用Spring Boot 1.4.0,事情变得更容易了!
使用Spring Boot 1.4.0引入了PrincipalExtractor。应该实现此类以提取自定义主体(请参阅Spring Boot 1.4 Release Notes)。
如果仅涉及权限,则可以实施AuthoritiesExtractor。