Spring security oauth2 authorization server 0.3.1 如何在token里添加用户信息
时间: 2024-03-03 15:47:52 浏览: 166
在Spring Security OAuth2 Authorization Server 0.3.1中,可以通过实现TokenEnhancer接口来向Access Token中添加用户信息。具体步骤如下:
1. 创建一个类,实现TokenEnhancer接口,例如:
```java
public class CustomTokenEnhancer implements TokenEnhancer {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
Map<String, Object> additionalInfo = new HashMap<>();
additionalInfo.put("user_name", authentication.getName());
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
return accessToken;
}
}
```
上述代码中,我们向Access Token的附加信息中添加了一个名为"user_name"的键值对,它的值为当前用户的用户名。
2. 在Authorization Server配置类中,设置TokenEnhancer,例如:
```java
@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private DataSource dataSource;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager)
.userDetailsService(userDetailsService)
.tokenStore(tokenStore())
.tokenEnhancer(tokenEnhancer());
}
@Bean
public TokenEnhancer tokenEnhancer() {
return new CustomTokenEnhancer();
}
// ...
}
```
在上述代码中,我们通过调用tokenEnhancer()方法来设置TokenEnhancer,它使用我们自定义的CustomTokenEnhancer类。
3. 在调用/token接口时,通过获取Access Token的响应内容,可以看到"user_name"键值对的值已经被添加到Access Token的附加信息中。
以上就是向Access Token中添加用户信息的步骤。需要注意的是,如果要添加更多的用户信息,只需要在CustomTokenEnhancer类的enhance()方法中继续向additionalInfo中添加键值对即可。
阅读全文