2014-11-05 21 views
8

Próbuję skonfigurować serwer zasobów do pracy z oddzielnym serwerem autoryzacji przy użyciu ochrony sprężystej oauth. Używam RemoteTokenServices, który wymaga punktu końcowego /check_token.Spring Security OAuth2 check_token punkt końcowy

Widzę, że punkt końcowy /oauth/check_token jest domyślnie włączony, gdy używana jest @EnableAuthorizationServer. Jednak punkt końcowy jest domyślnie niedostępny.

Czy następujący wpis należy dodać ręcznie, aby dodać do białej listy ten punkt końcowy?

http.authorizeRequests().antMatchers("/oauth/check_token").permitAll(); 

To sprawi, że ten punkt końcowy stanie się dostępny dla wszystkich, czy jest to pożądane zachowanie? Czy może czegoś brakuje?

Dzięki z góry,

Odpowiedz

13

Trzeba

@Override 
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception 
{ 
    oauthServer.checkTokenAccess("permitAll()");  
} 

Aby uzyskać więcej informacji na ten temat ::

How to use RemoteTokenService?

+3

Would not "isAuthenticated()" są wyższe niż "permitAll()"? –

+0

Napisałem to, ponieważ próbuje to osiągnąć w powyższym kodzie. –

0

Najpierw config żeton wyrażenie dostęp:

@Override 
public void configure(AuthorizationServerSecurityConfigurer securityConfigurer) throws Exception { 
    securityConfigurer 
      .allowFormAuthenticationForClients() 
      .checkTokenAccess("isAuthenticated()") 
      .addTokenEndpointAuthenticationFilter(checkTokenEndpointFilter()); 
} 

Następnie musimy zdefiniować filtr do procesu uwierzytelniania klient:

@Bean 
public ClientCredentialsTokenEndpointFilter checkTokenEndpointFilter() { 
    ClientCredentialsTokenEndpointFilter filter = new ClientCredentialsTokenEndpointFilter("/oauth/check_token"); 
    filter.setAuthenticationManager(authenticationManager); 
    filter.setAllowOnlyPost(true); 
    return filter; 
} 
Powiązane problemy