2014-11-05 22 views
8

Sto provando a configurare un server di risorse per lavorare con server di autorizzazione separati utilizzando oauth di Spring Security. Sto usando RemoteTokenServices che richiede l'endpoint /check_token.Spring Security OAuth2 check_token endpoint

Ho potuto vedere che l'endpoint /oauth/check_token è abilitato di default quando viene utilizzato @EnableAuthorizationServer. Tuttavia, l'endpoint non è accessibile per impostazione predefinita.

La seguente voce deve essere aggiunta manualmente per autorizzare questo endpoint?

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

Ciò renderà questo endpoint accessibile a tutti, è questo il comportamento desiderato? O mi sta sfuggendo qualcosa.

Grazie in anticipo,

risposta

13

Devi

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

Per ulteriori informazioni su questo ::

How to use RemoteTokenService?

+3

Would not "isAuthenticated()" meglio di "permitAll()"? –

+0

Ho scritto questo perché sta cercando di ottenere questo nel suo codice sopra. –

0

In primo luogo, config token di accesso espressione:

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

Poi, abbiamo bisogno di definire un filtro per elaborare l'autenticazione del client:

@Bean 
public ClientCredentialsTokenEndpointFilter checkTokenEndpointFilter() { 
    ClientCredentialsTokenEndpointFilter filter = new ClientCredentialsTokenEndpointFilter("/oauth/check_token"); 
    filter.setAuthenticationManager(authenticationManager); 
    filter.setAllowOnlyPost(true); 
    return filter; 
} 
Problemi correlati