2014-11-05 10 views
8

Я пытаюсь настроить сервер ресурсов для работы с отдельным сервером авторизации с использованием весенней безопасности oauth. Я использую RemoteTokenServices, для чего требуется конечная точка /check_token.Spring Security OAuth2 check_token конечная точка

Я мог видеть, что конечная точка /oauth/check_token включена по умолчанию, когда используется @EnableAuthorizationServer. Однако конечная точка недоступна по умолчанию.

Следует ли вручную добавить следующую запись в белый список этой конечной точки?

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

Это сделает эту конечную точку доступной для всех, является ли это желательным поведением? Или я что-то упускаю.

Спасибо заранее,

ответ

13

Вы должны

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

Для получения дополнительной информации по этому вопросу ::

How to use RemoteTokenService?

+3

не "isAuthenticated()" было бы лучше, чем "permitAll()"? –

+0

Я написал это, потому что он пытается достичь этого в своем вышеприведенном коде. –

0

Во-первых, конфиг лексема выражение доступа:

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

Затем нам нужно определить фильтр для обработки аутентификации клиента:

@Bean 
public ClientCredentialsTokenEndpointFilter checkTokenEndpointFilter() { 
    ClientCredentialsTokenEndpointFilter filter = new ClientCredentialsTokenEndpointFilter("/oauth/check_token"); 
    filter.setAuthenticationManager(authenticationManager); 
    filter.setAllowOnlyPost(true); 
    return filter; 
} 
Смежные вопросы