java - Spring Oauth2 单点登录 : Use Authority granted by AuthorizationServer

标签 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..

最佳答案

解决方案是创建一个自定义 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/

相关文章:

java - java中的日期格式

Java SAX 解析。获取当前正在解析的 xml 文件中的文件行

java - 初始化扩展 jar 内类的 bean 时上下文初始化失败

java - 生成随机数但有一些小错误

java - 如何在 JodConverter 中读取 doc 或 pdf 中的文本

spring - 无法让QueryDsl/APT生成Q类

java - 为什么 Spring 调度程序加载两次?

java - 如何禁用浏览器基本身份验证弹出窗口 - Angular 5 + Spring Security

java - Spring Openid、OpenIDAuthenticationToken

java - 如何在 Spring Boot 中禁用一项服务的身份验证?