2015-10-19 31 views
5

Oauth2 için ayrı kimlik ve kaynak sunucuları yapılandırmaya çalışıyorum. Yetkilendirme sunucusunu başarıyla yapılandırabilir ve erişim belirteçleri kimlik doğrulaması yapabilir ve oluşturabilirim. Şimdi erişim belirteçlerini doğrulamak için api uç noktasıyla auth sunucusunda konuşabilen bir kaynak sunucusu yapılandırmak istiyorum. Aşağıda kaynak sunucu yapılandırmamdır. Ben AuthenticationManager kaynak sunucuda tüm kimlik doğrulama sunucusu auth için delege ise neden : 1. Spring Oauth2 ayrı kaynak sunucu yapılandırması

@Configuration 
@EnableResourceServer 
@EnableWebSecurity 
public class Oauth2SecurityConfiguration extends WebSecurityConfigurerAdapter  { 


@Override 
protected void configure(HttpSecurity http) throws Exception { 
    System.out.println("Oauth2SecurityConfiguration before"); 
    http 
       .authorizeRequests() 
       .antMatchers(HttpMethod.GET, "/api/v1/**").authenticated(); 
    System.out.println("Oauth2SecurityConfiguration after"); 
} 

@Bean 
public AccessTokenConverter accessTokenConverter() { 
    return new DefaultAccessTokenConverter(); 
} 

@Bean 
public RemoteTokenServices remoteTokenServices() { 
    final RemoteTokenServices remoteTokenServices = new RemoteTokenServices(); 
    remoteTokenServices.setCheckTokenEndpointUrl("http://localhost:9000/authserver/oauth/check_token"); 
    remoteTokenServices.setClientId("clientId"); 
    remoteTokenServices.setClientSecret("clientSecret"); 
    remoteTokenServices.setAccessTokenConverter(accessTokenConverter()); 
    return remoteTokenServices; 
} 

@Override 
@Bean 
public AuthenticationManager authenticationManager() throws Exception { 
    OAuth2AuthenticationManager authenticationManager = new OAuth2AuthenticationManager(); 
    authenticationManager.setTokenServices(remoteTokenServices()); 
    return authenticationManager; 
} 
} 


@Configuration 
@EnableResourceServer 
public class ResourceServerConfig extends ResourceServerConfigurerAdapter { 
    @Override 
    public void configure(HttpSecurity http) throws Exception { 
     http.csrf().disable(); 
     System.out.println("http.csrf().disable()"); 
     http.authorizeRequests().antMatchers(HttpMethod.GET, "/api/v1/**").fullyAuthenticated(); 
     System.out.println("http.authorizeRequests().anyRequest().authenticated()"); 
    } 
} 


@Configuration 
@EnableGlobalMethodSecurity(prePostEnabled = true, proxyTargetClass = true) 
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration { 

@Override 
protected MethodSecurityExpressionHandler createExpressionHandler() { 
    return new OAuth2MethodSecurityExpressionHandler(); 
} 
} 

Soru

. (Yüklemeyi uygulama bağlamına eklemek zorundaydım)

Bundan ayrı olarak aşağıdaki sorunların üstesinden geliyorum. Yetkilendirme üstbilgilerini iletmemek ve istekle birlikte belirtecine erişimimi alamam da,

  1. . Geçiyor.

    http GET "http://localhost:8080/DataPlatform/api/v1/123sw/members" 
    HTTP/1.1 200 OK 
    Content-Type: application/json;charset=UTF-8 
    Date: Mon, 19 Oct 2015 19:45:14 GMT 
    Server: Apache-Coyote/1.1 
    Transfer-Encoding: chunked 
    { 
    "entities": [], 
    "errors": [], 
    "message": null 
    } 
    
  2. filtreler yalnızca Ben istekleri aşağıdaki günlüklerini görmüyorum kerede çağrılır. Bir yerde yetkilendirmeyi önbelleğe alıyor mu?

İlkbaharda yeni yaşıyorum Yanlış bir şey yapıyorumsa lütfen bana bildirin. Ben Sen @EnableResourceServer yeterlidir @EnableWebSecurityOauth2SecurityConfiguration üzerinde gerekmez

spring-security-oauth2 : 2.0.7.RELEASE 
spring-security-core : 4.0.1.RELEASE 
java : 1.8 

cevap

0

kullanıyorum. 'u extends ResourceServerConfigurerAdapter ile değiştirmelisiniz. Eğer RemoteTokenServices örneğini kullanmak istiyorsanız

ben http docs 'uygulamanızda bir yere @EnableWebSecurity gerekir bu filtreyi kullanmak amacıyla' sen Ama görüyorum

@Override 
public void configure(ResourceServerSecurityConfigurer resources) throws Exception 
{ 
    resources.tokenServices(serverConfig.getTokenServices()); 
} 
+0

ile ResourceServerConfigurerAdapterpublic void configure(ResourceServerSecurityConfigurer resources) throws Exception geçersiz tavsiye: //docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/config/annotation/web/configuration/EnableResourceServer.html –

İlgili konular