Commit 1adde32c by yuwei

项目初始化

parent 944e0d24
...@@ -20,9 +20,7 @@ import org.springframework.security.oauth2.config.annotation.web.configurers.Aut ...@@ -20,9 +20,7 @@ import org.springframework.security.oauth2.config.annotation.web.configurers.Aut
import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer; import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
import org.springframework.security.oauth2.provider.ClientDetailsService; import org.springframework.security.oauth2.provider.ClientDetailsService;
import org.springframework.security.oauth2.provider.client.JdbcClientDetailsService; import org.springframework.security.oauth2.provider.client.JdbcClientDetailsService;
import org.springframework.security.oauth2.provider.token.DefaultTokenServices; import org.springframework.security.oauth2.provider.token.*;
import org.springframework.security.oauth2.provider.token.TokenEnhancer;
import org.springframework.security.oauth2.provider.token.TokenStore;
import javax.sql.DataSource; import javax.sql.DataSource;
import java.util.HashMap; import java.util.HashMap;
...@@ -69,8 +67,9 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap ...@@ -69,8 +67,9 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap
* @throws Exception * @throws Exception
*/ */
@Override @Override
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { public void configure(AuthorizationServerSecurityConfigurer security) {
security.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()") security.tokenKeyAccess("permitAll()")
.checkTokenAccess("isAuthenticated()")
.allowFormAuthenticationForClients() .allowFormAuthenticationForClients()
.authenticationEntryPoint(exceptionEntryPoint) .authenticationEntryPoint(exceptionEntryPoint)
.accessDeniedHandler(accessDeniedHandler); .accessDeniedHandler(accessDeniedHandler);
...@@ -82,7 +81,7 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap ...@@ -82,7 +81,7 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap
* @throws Exception * @throws Exception
*/ */
@Override @Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
endpoints.tokenStore(tokenStore()) endpoints.tokenStore(tokenStore())
.tokenServices(tokenServices()) .tokenServices(tokenServices())
.userDetailsService(userDetailService) .userDetailsService(userDetailService)
......
...@@ -26,7 +26,7 @@ public class DataWebResponseExceptionTranslator implements WebResponseExceptionT ...@@ -26,7 +26,7 @@ public class DataWebResponseExceptionTranslator implements WebResponseExceptionT
} }
@Override @Override
public ResponseEntity<OAuth2Exception> translate(Exception e) throws Exception { public ResponseEntity<OAuth2Exception> translate(Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
// Try to extract a SpringSecurityException from the stacktrace // Try to extract a SpringSecurityException from the stacktrace
......
...@@ -4,6 +4,7 @@ import org.springframework.web.context.request.RequestContextHolder; ...@@ -4,6 +4,7 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** /**
* 获取 HttpServletRequest * 获取 HttpServletRequest
...@@ -14,4 +15,8 @@ public class RequestHolder { ...@@ -14,4 +15,8 @@ public class RequestHolder {
public static HttpServletRequest getHttpServletRequest() { public static HttpServletRequest getHttpServletRequest() {
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
} }
public static HttpServletResponse getHttpServletResponse() {
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
}
} }
package cn.datax.common.security.utils;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.common.exceptions.InvalidTokenException;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.token.*;
import java.util.Map;
@Slf4j
public class DataRedisTokenServices implements ResourceServerTokenServices {
@Setter
private TokenStore tokenStore;
@Override
public OAuth2Authentication loadAuthentication(String accessToken) throws AuthenticationException, InvalidTokenException {
OAuth2Authentication authentication = tokenStore.readAuthentication(accessToken);
OAuth2AccessToken token = readAccessToken(accessToken);
if(null == authentication || null == token){
throw new InvalidTokenException(accessToken);
}
DefaultAccessTokenConverter accessTokenConverter = new DefaultAccessTokenConverter();
UserAuthenticationConverter userTokenConverter = new DataUserAuthenticationConverter();
accessTokenConverter.setUserTokenConverter(userTokenConverter);
Map<String, ?> map = accessTokenConverter.convertAccessToken(token, authentication);
if (map.containsKey("error")) {
if (this.log.isDebugEnabled()) {
this.log.debug("check_token returned error: " + map.get("error"));
}
throw new InvalidTokenException(accessToken);
} else {
return accessTokenConverter.extractAuthentication(map);
}
}
@Override
public OAuth2AccessToken readAccessToken(String accessToken) {
return tokenStore.readAccessToken(accessToken);
}
}
package cn.datax.service.system.config; package cn.datax.service.system.config;
import cn.datax.common.security.utils.DataUserAuthenticationConverter; import cn.datax.common.security.utils.DataRedisTokenServices;
import cn.datax.common.security.handler.DataAccessDeniedHandler; import cn.datax.common.security.handler.DataAccessDeniedHandler;
import cn.datax.common.security.handler.DataAuthExceptionEntryPoint; import cn.datax.common.security.handler.DataAuthExceptionEntryPoint;
import cn.datax.common.security.utils.RedisTokenStore; import cn.datax.common.security.utils.RedisTokenStore;
...@@ -14,12 +14,11 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.E ...@@ -14,12 +14,11 @@ import org.springframework.security.oauth2.config.annotation.web.configuration.E
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer; import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
import org.springframework.security.oauth2.provider.token.*; import org.springframework.security.oauth2.provider.token.*;
import org.springframework.web.client.RestTemplate;
@Configuration @Configuration
@EnableResourceServer @EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true) @EnableGlobalMethodSecurity(prePostEnabled = true)
public class ResourceServerConfig extends ResourceServerConfigurerAdapter { public class DataResourceServerConfig extends ResourceServerConfigurerAdapter {
@Autowired @Autowired
private DataAccessDeniedHandler accessDeniedHandler; private DataAccessDeniedHandler accessDeniedHandler;
...@@ -30,12 +29,6 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter { ...@@ -30,12 +29,6 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Autowired @Autowired
private RedisConnectionFactory redisConnectionFactory; private RedisConnectionFactory redisConnectionFactory;
// @Autowired
// private RemoteTokenServices remoteTokenServices;
//
// @Autowired
// private RestTemplate restTemplate;
@Bean @Bean
public TokenStore redisTokenStore() { public TokenStore redisTokenStore() {
return new RedisTokenStore(redisConnectionFactory); return new RedisTokenStore(redisConnectionFactory);
...@@ -43,17 +36,12 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter { ...@@ -43,17 +36,12 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
@Override @Override
public void configure(ResourceServerSecurityConfigurer resources) { public void configure(ResourceServerSecurityConfigurer resources) {
//token不对的时候验证返还不了信息 DataRedisTokenServices dataTokenServices = new DataRedisTokenServices();
// DefaultAccessTokenConverter accessTokenConverter = new DefaultAccessTokenConverter(); dataTokenServices.setTokenStore(redisTokenStore());
// UserAuthenticationConverter userAuthenticationConverter = new DataUserAuthenticationConverter();
// accessTokenConverter.setUserTokenConverter(userAuthenticationConverter);
//
// remoteTokenServices.setRestTemplate(restTemplate);
// remoteTokenServices.setAccessTokenConverter(accessTokenConverter);
resources resources
.tokenStore(redisTokenStore()) .tokenStore(redisTokenStore())
// .tokenServices(remoteTokenServices) .tokenServices(dataTokenServices)
.authenticationEntryPoint(exceptionEntryPoint) .authenticationEntryPoint(exceptionEntryPoint)
.accessDeniedHandler(accessDeniedHandler); .accessDeniedHandler(accessDeniedHandler);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment