Spring Oauth2 SSO:使用授权服务器

时间:2015-07-09 16:36:50

标签: java spring spring-security spring-security-oauth2 spring-security-ldap

我的设置是一个AuthorizationServer,我在其中对ldap进行身份验证。 当我直接从授权服务器请求用户时 他有一个特定的权限取决于ldap组。

当我在调试时查看ResourceServer中的Oauth2Authentication时,只有userAuthentication.details.authorities具有此权限。任何其他权限都设置为ROLE_USER。

是否可以使用AuthorizationServer提供的用户权限?

如果我使用spring.oauth2.resource.tokenInfoUri来检索权限,它就可以工作。但我想使用AuthorizationServer提供的UserDetails ..

1 个答案:

答案 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