【问题标题】:Spring Boot OAuth2 Resource Server - Error by calling user-info-uri or token-info-uriSpring Boot OAuth2 资源服务器 - 调用 user-info-uri 或 token-info-uri 时出错
【发布时间】:2017-10-06 13:05:19
【问题描述】:

我尝试单独构建一个 spring boot oauth2 授权和资源服务器。

为了获得请求令牌的身份验证,资源服务器调用配置的 URI。

security:      
      oauth2:
            resource:
            user-info-uri: http://localhost:9999/uaa/user 

在授权服务器中,我实现了 /user 方法,如一些 教程,例如

https://spring.io/blog/2015/02/03/sso-with-oauth2-angular-js-and-spring-security-part-v

    @SpringBootApplication
    @RestController
    @EnableAuthorizationServer
    public class ApplicationAuthorizationServer   {

    ... 

    @RequestMapping("/user")
    public Principal user(Principal user) {
      return user;
    }
   }

在 Spring Boot 中,自动配置会创建一个 UserInfoTokenService,OAuth2AuthenticationProcessingFilter 将使用它来调用期望返回类型 Map 的方法 /user。

第一个问题是!

校长不是地图。它是如何协同工作的?

第二个问题!

如果UserInfoTokenService调用授权服务器上的方法/user,则参数Principal为null,认证失败。

谁用值填充 Principal 参数?

最后一个问题是!

因为我徒劳地投入了太多时间,所以我尝试使用其他 URI

security:      
     oauth2:
       resource:
         token-info-uri: http://localhost:9999/uaa/oauth/check_token

但如果我只定义这个 URI,OAuth2AuthenticationProcessingFilter 会使用 DefaultTokenService 并尝试在资源服务器的 In-Memory 令牌存储中找到令牌。该服务没有找到它们并返回一个身份验证错误。

Spring Boot 自动配置应该创建一个像 TokeInfoTokenService 这样的服务来调用 token-info 端点。

为什么在这种情况下会创建 DefaultTokenService?

有人可以帮我吗?

【问题讨论】:

    标签: spring spring-boot spring-security spring-oauth2


    【解决方案1】:

    我可以为您提供一些答案:

    校长不是地图。它是如何协同工作的? 返回的映射将由 Spring security 获取,然后单个键将映射到 Principal 的字段。因此,如果地图包含“当局”字段,这将被映射到委托人当局。与 user_name 等相同。

    谁在 Principal 参数中填入一个值? 如果是以下配置:

    security:      
     oauth2:
       resource:
         token-info-uri: http://localhost:9999/uaa/oauth/check_token
    

    RemoteTokenServices.java 在loadAuthentication(String accessToken) 方法中加载主体,并使用令牌转换器添加所有值。

    希望这会有所帮助..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-09
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 2021-02-07
      • 1970-01-01
      • 2018-08-29
      相关资源
      最近更新 更多