我尝试分别构建一个spring boot oauth2 authorzation和resource server .
要获取请求令牌的身份验证,资源服务器将调用configrued URI .
security:
oauth2:
resource:
user-info-uri: http://localhost:9999/uaa/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中,autoconfiguration创建一个UserInfoTokenService,OAuth2AuthenticationProcessingFilter将使用它来调用期望返回类型Map的方法/用户 .
第一个问题是!
A Principal isn't a Map. How works it together?
第二个问题是!
如果UserInfoTokenService在授权服务器上调用方法/ user,则参数Principal为null,并且验证失败 .
Who fills the Principal parameter with a value?
最后一个问题是!
因为我徒劳地投入了这么多时间,所以我尝试使用其他URI
security:
oauth2:
resource:
token-info-uri: http://localhost:9999/uaa/oauth/check_token
但是,如果我只定义此URI,OAuth2AuthenticationProcessingFilter将使用DefaultTokenService并尝试在资源服务器的In-Memory令牌存储中查找令牌 . 该服务未找到它们并返回验证错误 .
Spring Boot自动配置应该创建像TokeInfoTokenService这样的服务,例如调用token-info endpoints .
Why in this case the DefaultTokenService is created?
有人能帮助我吗?