2016-06-28 10 views
3

私は、Springを使用して実装されたOAuth2クライアントのためのtroubeの検索例を持っています。SpringセキュリティのOauth2クライアント

私はOAuth2認可とリソースサーバーをSpringを使用して実装しています。その認可サーバーからアクセストークンを取得したい。クライアント証明書だけを使用してOAuth2サーバーからアクセストークンを取得する方法の例が必要です。クライアントの資格情報を使用してアクセストークンを取得した後、クライアントリソースにアクセスするために使用しているクライアントアプリケーションのユーザーはいません。

私はJavaライブラリを使用した例しか見つかりませんでしたが、SpringのOAuth2フレームワークでサポートされていると仮定します。

例では、OAuth2クライアント、OAuth2認証サーバー、およびOAuth2リソースサーバーが含まれており、xml構成を使用せずにSpringを使用して実装された自己署名証明書を使用してTLSで通信します。ここで

は、シーケンス図である:

enter image description here

答えて

5

以下に示すサンプルコードとして春のセキュリティのOAuth2ライブラリを経由してアクセストークンを取得するにはかなりstraightfowardです。

@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(); 
    } 
} 
:あなたはこのような場合に必要な唯一の依存性が

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

サンプルコードです

関連する問題