39.SpringSecurityOauth2整合JWT
使用原先 springsecurityoauth2-demo 进行修改整合
将springsecurityoauth2-demo复制一份成 springsecurityoauth2-jwt-demo
- 因为用不到redis配置,所以移除pom中的redis依赖
- 移除application.properties中的redis连接地址
- 移除配置类(config)中的redis配置类
新增JWT的配置
在配置(config)中新建JwtTokenStoreConfig.java
JwtTokenStoreConfig.java
/**
* @ClassName JwtTokenStoreConfig
* @Description TODO JwtToken配置类
* @Author Eternal night
* @Date 2022/4/2 22:30
* @Version 1.0
*/
@Configuration
public class JwtTokenStoreConfig {
/**
* 报错信息:Method annotated with @Bean is called directly. Use dependency injection instead.
* 原因:未添加@Configuration注解,导致@Bean之间相互调用出错
* 解决办法:添加@Configuration
*/
@Bean
public TokenStore jwtTokenStore() {
return new JwtTokenStore(jwtAccessTokenConverter());
}
@Bean
public JwtAccessTokenConverter jwtAccessTokenConverter() {
JwtAccessTokenConverter accessTokenConverter = new JwtAccessTokenConverter();
// 配置JWT使用的秘钥
accessTokenConverter.setSigningKey("test_key");
return accessTokenConverter;
}
}
在AuthorizationServerConfig.java中 注入JWT的token
AuthorizationServerConfig.java
// 注入JWT信息
@Autowired
@Qualifier("jwtTokenStore")
private TokenStore tokenStore;
配置JWT相对应的存储策略
AuthorizationServerConfig.java
// 配置存储令牌策略
.userDetailsService(userService)
配置accessToken,要和jwtToken进行转换
AuthorizationServerConfig.java
// accessToken要和JWTToken进行转换
.accessTokenConverter(jwtAccessTokenConverter);
在进行转换之前要引入(注入)JWT的Token
AuthorizationServerConfig.java
@Autowired
private JwtAccessTokenConverter jwtAccessTokenConverter;
创建JWT内容增强器
JwtTokenEnhancer.java
/**
* @ClassName JwtTokenEnhancer
* @Description TODO JWT内容增强器
* @Author Eternal night
* @Date 2022/4/2 23:54
* @Version 1.0
*/
public class JwtTokenEnhancer implements TokenEnhancer {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) {
HashMap<String, Object> info = new HashMap<>();
// info.put(Token,Value);
info.put("enhance", "enhance info");
((DefaultOAuth2AccessToken) oAuth2AccessToken).setAdditionalInformation(info);
return oAuth2AccessToken;
}
}
在JwtTokenStoreConfig类中添加JwtTokenEnhancer的bean
JwtTokenStoreConfig.java
@Bean
public JwtTokenEnhancer jwtTokenEnhancer() {
return new JwtTokenEnhancer();
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Eternal Night
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果