@Bean
public TokenEnhancer tokenEnhancer() {
return new TokenEnhancer() {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) {
DefaultOAuth2AccessToken newToken = new DefaultOAuth2AccessToken(oAuth2AccessToken);
Map<String, Object> addInfo = new HashMap<>();
// add here what u need
addInfo.put("putName", oAuth2Authentication.getName());
newToken.setAdditionalInformation(addInfo);
return newToken;
}
};
}
,并在AuthorizationServerConfiguration:
@Autowired
private TokenEnhancer tokenEnhancer;
...
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints)
throws Exception {
endpoints
.tokenStore(this.tokenStore)
.authenticationManager(this.authenticationManager)
.userDetailsService(this.userDetailsService)
.tokenEnhancer(this.tokenEnhancer);
}
谢谢你的答案。我的想法是,服务器(终点)解码访问令牌,并与USER_ID的帮助下将用户添加到SecurityContextHolder的 – jack 2014-09-21 12:07:33
检查访问令牌表的SQL它包含已经USER_NAME这样你就可以从数据库直接,明白了没有需要解码它。如果你的终端有这个数据库不能访问,可以auth服务器暴露基于访问令牌的用户配置文件,该请求由OAuth的固定上也做的端点。 – 2014-09-22 14:47:16