Li Shengzhao
9 years ago
4 changed files with 151 additions and 30 deletions
@ -0,0 +1,64 @@ |
|||||||
|
package com.monkeyk.sos.config; |
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
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.ClientDetailsService; |
||||||
|
import org.springframework.security.oauth2.provider.approval.UserApprovalHandler; |
||||||
|
import org.springframework.security.oauth2.provider.code.AuthorizationCodeServices; |
||||||
|
import org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler; |
||||||
|
import org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint; |
||||||
|
import org.springframework.security.oauth2.provider.token.DefaultTokenServices; |
||||||
|
|
||||||
|
/** |
||||||
|
* 2016/4/4 |
||||||
|
* |
||||||
|
* @author Shengzhao Li |
||||||
|
*/ |
||||||
|
//AuthorizationServer
|
||||||
|
@Configuration |
||||||
|
@EnableAuthorizationServer |
||||||
|
public class AuthorizationServerConfigurer extends AuthorizationServerConfigurerAdapter { |
||||||
|
|
||||||
|
// @Autowired
|
||||||
|
// private DefaultTokenServices tokenServices;
|
||||||
|
|
||||||
|
@Autowired |
||||||
|
private UserApprovalHandler userApprovalHandler; |
||||||
|
|
||||||
|
@Autowired |
||||||
|
private AuthorizationCodeServices authorizationCodeServices; |
||||||
|
@Autowired |
||||||
|
private ClientDetailsService clientDetailsService; |
||||||
|
@Autowired |
||||||
|
private OAuth2AccessDeniedHandler oauth2AccessDeniedHandler; |
||||||
|
@Autowired |
||||||
|
private OAuth2AuthenticationEntryPoint oAuth2AuthenticationEntryPoint; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void configure(ClientDetailsServiceConfigurer clients) throws Exception { |
||||||
|
clients.withClientDetails(clientDetailsService); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { |
||||||
|
endpoints.userApprovalHandler(userApprovalHandler) |
||||||
|
// .tokenServices(tokenServices)
|
||||||
|
.authorizationCodeServices(authorizationCodeServices); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void configure(AuthorizationServerSecurityConfigurer security) throws Exception { |
||||||
|
security.accessDeniedHandler(oauth2AccessDeniedHandler) |
||||||
|
.authenticationEntryPoint(oAuth2AuthenticationEntryPoint) |
||||||
|
.allowFormAuthenticationForClients(); |
||||||
|
security.realm("spring-oauth-server_realm"); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,52 @@ |
|||||||
|
package com.monkeyk.sos.config; |
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
import org.springframework.security.access.AccessDecisionManager; |
||||||
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity; |
||||||
|
import org.springframework.security.config.http.SessionCreationPolicy; |
||||||
|
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer; |
||||||
|
import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter; |
||||||
|
import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer; |
||||||
|
|
||||||
|
/** |
||||||
|
* 2016/4/4 |
||||||
|
* |
||||||
|
* @author Shengzhao Li |
||||||
|
*/ |
||||||
|
// unity-resource
|
||||||
|
@Configuration |
||||||
|
@EnableResourceServer |
||||||
|
public class UnityResourceServerConfigurer extends ResourceServerConfigurerAdapter { |
||||||
|
|
||||||
|
|
||||||
|
@Autowired |
||||||
|
private AccessDecisionManager oauth2AccessDecisionManager; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void configure(ResourceServerSecurityConfigurer resources) { |
||||||
|
resources.resourceId("unity-resource").stateless(false); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public void configure(HttpSecurity http) throws Exception { |
||||||
|
// final DefaultWebSecurityExpressionHandler expressionHandler = new DefaultWebSecurityExpressionHandler();
|
||||||
|
// expressionHandler.setExpressionParser();
|
||||||
|
|
||||||
|
http.sessionManagement() |
||||||
|
.sessionCreationPolicy(SessionCreationPolicy.NEVER) |
||||||
|
.and() |
||||||
|
.requestMatchers().antMatchers("/unity/**") |
||||||
|
.and() |
||||||
|
.authorizeRequests() |
||||||
|
// .expressionHandler(expressionHandler)
|
||||||
|
.antMatchers("/unity/**") |
||||||
|
// .access("hasRole('ROLE_UNITY') and hasRole('SCOPE_READ')")
|
||||||
|
.access("#oauth2.clientHasRole('ROLE_UNITY') and #oauth2.isClient() and #oauth2.hasScope('read')") |
||||||
|
.accessDecisionManager(oauth2AccessDecisionManager) |
||||||
|
.and().csrf().disable(); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
|
Loading…
Reference in new issue