mirror of https://gitee.com/maxjhandsome/pig
token 声明pig版权
This commit is contained in:
parent
165bf328ac
commit
3e0959a25c
|
@ -2,9 +2,8 @@ package com.github.pig.auth.component.mobile;
|
|||
|
||||
import com.github.pig.auth.feign.UserService;
|
||||
import com.github.pig.auth.util.UserDetailsImpl;
|
||||
import com.github.pig.common.vo.UserVo;
|
||||
import com.github.pig.common.vo.UserVO;
|
||||
import org.springframework.security.authentication.AuthenticationProvider;
|
||||
import org.springframework.security.authentication.InternalAuthenticationServiceException;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
|
@ -20,7 +19,7 @@ public class MobileAuthenticationProvider implements AuthenticationProvider {
|
|||
@Override
|
||||
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
|
||||
MobileAuthenticationToken mobileAuthenticationToken = (MobileAuthenticationToken) authentication;
|
||||
UserVo userVo = userService.findUserByMobile((String) mobileAuthenticationToken.getPrincipal());
|
||||
UserVO userVo = userService.findUserByMobile((String) mobileAuthenticationToken.getPrincipal());
|
||||
|
||||
if (userVo == null) {
|
||||
throw new UsernameNotFoundException("手机号不存在:" + mobileAuthenticationToken.getPrincipal());
|
||||
|
@ -33,7 +32,7 @@ public class MobileAuthenticationProvider implements AuthenticationProvider {
|
|||
return authenticationToken;
|
||||
}
|
||||
|
||||
private UserDetailsImpl buildUserDeatils(UserVo userVo) {
|
||||
private UserDetailsImpl buildUserDeatils(UserVO userVo) {
|
||||
return new UserDetailsImpl(userVo);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,14 +11,25 @@ import org.springframework.security.authentication.AuthenticationManager;
|
|||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
|
||||
import org.springframework.security.oauth2.common.OAuth2AccessToken;
|
||||
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
|
||||
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
|
||||
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
|
||||
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
|
||||
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
|
||||
import org.springframework.security.oauth2.provider.OAuth2Authentication;
|
||||
import org.springframework.security.oauth2.provider.token.AccessTokenConverter;
|
||||
import org.springframework.security.oauth2.provider.token.TokenEnhancer;
|
||||
import org.springframework.security.oauth2.provider.token.TokenEnhancerChain;
|
||||
import org.springframework.security.oauth2.provider.token.TokenStore;
|
||||
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
|
||||
import org.springframework.security.oauth2.provider.token.store.redis.RedisTokenStore;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author lengleng
|
||||
* @date 2017/10/27
|
||||
|
@ -54,9 +65,14 @@ public class PigAuthorizationConfig extends AuthorizationServerConfigurerAdapter
|
|||
|
||||
@Override
|
||||
public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
|
||||
//token增强配置
|
||||
TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
|
||||
tokenEnhancerChain.setTokenEnhancers(
|
||||
Arrays.asList(tokenEnhancer(), jwtAccessTokenConverter()));
|
||||
|
||||
endpoints
|
||||
.tokenStore(new RedisTokenStore(redisConnectionFactory))
|
||||
.accessTokenConverter(jwtAccessTokenConverter())
|
||||
.tokenStore(redisTokenStore())
|
||||
.tokenEnhancer(tokenEnhancerChain)
|
||||
.authenticationManager(authenticationManager)
|
||||
.reuseRefreshTokens(false)
|
||||
.userDetailsService(userDetailsService);
|
||||
|
@ -77,9 +93,34 @@ public class PigAuthorizationConfig extends AuthorizationServerConfigurerAdapter
|
|||
|
||||
@Bean
|
||||
public JwtAccessTokenConverter jwtAccessTokenConverter() {
|
||||
JwtAccessTokenConverter jwtAccessTokenConverter = new JwtAccessTokenConverter();
|
||||
JwtAccessTokenConverter jwtAccessTokenConverter = new PigJwtAccessTokenConverter();
|
||||
jwtAccessTokenConverter.setSigningKey(CommonConstant.SIGN_KEY);
|
||||
return jwtAccessTokenConverter;
|
||||
}
|
||||
|
||||
/**
|
||||
* tokenstore 定制化处理
|
||||
* @return TokenStore
|
||||
*/
|
||||
@Bean
|
||||
public TokenStore redisTokenStore() {
|
||||
RedisTokenStore tokenStore = new RedisTokenStore(redisConnectionFactory);
|
||||
tokenStore.setPrefix(SecurityConstants.PIG_PREFIX);
|
||||
return tokenStore;
|
||||
}
|
||||
|
||||
/**
|
||||
* jwt 生成token 定制化处理
|
||||
* @return TokenEnhancer
|
||||
*/
|
||||
@Bean
|
||||
public TokenEnhancer tokenEnhancer() {
|
||||
return (accessToken, authentication) -> {
|
||||
final Map<String, Object> additionalInfo = new HashMap<>(1);
|
||||
additionalInfo.put("license", SecurityConstants.PIG_LICENSE);
|
||||
((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
|
||||
return accessToken;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package com.github.pig.auth.config;
|
||||
|
||||
import com.github.pig.common.constant.SecurityConstants;
|
||||
import org.springframework.security.oauth2.common.OAuth2AccessToken;
|
||||
import org.springframework.security.oauth2.provider.OAuth2Authentication;
|
||||
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author lengleng
|
||||
* @date 2018/4/7
|
||||
* token 声明版权
|
||||
*/
|
||||
public class PigJwtAccessTokenConverter extends JwtAccessTokenConverter {
|
||||
@Override
|
||||
public Map<String, ?> convertAccessToken(OAuth2AccessToken token, OAuth2Authentication authentication) {
|
||||
Map<String, Object> representation = (Map<String, Object>) super.convertAccessToken(token, authentication);
|
||||
representation.put("license", SecurityConstants.PIG_LICENSE);
|
||||
return representation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OAuth2AccessToken extractAccessToken(String value, Map<String, ?> map) {
|
||||
return super.extractAccessToken(value, map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OAuth2Authentication extractAuthentication(Map<String, ?> map) {
|
||||
return super.extractAuthentication(map);
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@ package com.github.pig.common.bean.aop;
|
|||
|
||||
import com.github.pig.common.constant.SecurityConstants;
|
||||
import com.github.pig.common.util.UserUtils;
|
||||
import com.github.pig.common.vo.UserVo;
|
||||
import com.github.pig.common.vo.UserVO;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
|
@ -70,9 +70,9 @@ public class ControllerAop {
|
|||
HttpServletRequest request = attributes.getRequest();
|
||||
|
||||
String token = UserUtils.getToken(request);
|
||||
UserVo userVo = null;
|
||||
UserVO userVo = null;
|
||||
if (StringUtils.isNotEmpty(token)) {
|
||||
userVo = cacheManager.getCache(SecurityConstants.TOKEN_USER_DETAIL).get(token, UserVo.class);
|
||||
userVo = cacheManager.getCache(SecurityConstants.TOKEN_USER_DETAIL).get(token, UserVO.class);
|
||||
}
|
||||
String username;
|
||||
if (userVo == null) {
|
||||
|
|
|
@ -5,6 +5,14 @@ package com.github.pig.common.constant;
|
|||
* @date 2017-12-18
|
||||
*/
|
||||
public interface SecurityConstants {
|
||||
/**
|
||||
* 前缀
|
||||
*/
|
||||
String PIG_PREFIX = "pig_";
|
||||
/**
|
||||
* 项目的license
|
||||
*/
|
||||
String PIG_LICENSE = "made by pig";
|
||||
/**
|
||||
* 基础角色
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue