2016-06-28 6 views
3

У меня есть пример поиска трупов для клиента OAuth2, реализованный с использованием Spring.Oauth2 Client весной безопасности

У меня есть сервер авторизации и ресурсов OAuth2, реализованный с использованием Spring. Я хочу получить токен доступа с этого сервера авторизации. Мне нужен пример, как получить токен доступа с моего сервера OAuth2, используя только учетные данные клиента. Пользователь не участвует, только мое клиентское приложение получает маркер доступа с использованием учетных данных клиента, а затем использует его для доступа к клиенту ресурсов.

Я нашел только пример с использованием Java-библиотек, но я предполагаю, что в Spring OAuth2 есть поддержка.

Если возможно, пример должен содержать клиент OAuth2, сервер авторизации OAuth2 и сервер ресурсов OAuth2, все связанные с TLS с использованием самоподписанного сертификата, реализованные с использованием Spring, без конфигурации xml.

Вот диаграмма последовательности:

enter image description here

ответ

5

Это довольно straightfoward, чтобы получить маркер доступа с помощью библиотеки Spring Security oauth2 в качестве примера кода, показанного ниже. Единственная зависимость, что нужно в этом случае

{ 
    <dependency> 
     <groupId>org.springframework.security.oauth</groupId> 
     <artifactId>spring-security-oauth2</artifactId> 
     <version>2.1.0.RELEASE</version> 
    </dependency> 
} 

Пример кода:

@Test 
public void getAccessTokenViaSpringSecurityOAuthClient() { 
    try{ 

     ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails(); 
     resourceDetails.setClientSecret(TestOAuthConstants.CLIENT_SECRET); 
     resourceDetails.setClientId(TestOAuthConstants.CLIENT_ID); 
     resourceDetails.setAccessTokenUri(TestOAuthConstants.TOKEN_REQUEST_URL); 
     resourceDetails.setScope(TestOAuthConstants.SCOPES); 

     OAuth2RestTemplate oAuthRestTemplate = new OAuth2RestTemplate(resourceDetails); 

     org.springframework.http.HttpHeaders headers = new org.springframework.http.HttpHeaders(); 
     headers.setContentType(MediaType.APPLICATION_JSON); 

     OAuth2AccessToken token = oAuthRestTemplate.getAccessToken(); 
     System.out.println(oAuthRestTemplate.getResource()); 
     System.out.println(oAuthRestTemplate.getOAuth2ClientContext()); 
     System.out.println(token); 

     assertTrue(token != null); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
Смежные вопросы