2017-08-25 12 views
0

リフレッシュとアクセストークンの認証コードをSpringのoauth2クライアントパッケージと交換したいと思います。私のコードは次のようになります。Spring - oauth2 - リフレッシュとアクセストークンの認証コードを交換します

public static void main(String[] args) { 

    AuthorizationCodeResourceDetails resource = new AuthorizationCodeResourceDetails(); 
    resource.setUserAuthorizationUri("http://localhost:8080/oauth/authorize"); 
    resource.setAccessTokenUri("http://localhost:8080/oauth/token"); 
    resource.setClientId("my-client-with-secret"); 
    resource.setClientSecret("secret"); 

    AccessTokenRequest request = new DefaultAccessTokenRequest(); 
    request.setAuthorizationCode("o9subu"); 

    AuthorizationCodeAccessTokenProvider provider = new AuthorizationCodeAccessTokenProvider(); 
    OAuth2AccessToken accessToken = provider.obtainAccessToken(resource, request); 

    System.out.println(accessToken.getValue()); 
} 

プロバイダがhttps://github.com/spring-projects/spring-security-oauth/tree/master/tests/annotation/approvalからのものであり、私が直接プロバイダを呼び出したときに、私は、ブラウザからの一時のOAuth2コードを撮影しました。

、エラーメッセージがスレッド「メイン」エラー=「INVALID_REQUEST」で

例外であり、ましたerror_description =「考えCSRF検出 - 状態パラメータが必要であったが、何の状態が見つかりませんでした」org.springframeworkで をorg.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeAccessTokenProvider.obtainAccessTokenで.security.oauth2.client.token.grant.code.AuthorizationCodeAccessTokenProvider.getParametersForTokenRequest(AuthorizationCodeAccessTokenProvider.java:255) (AuthorizationCodeAccessTokenProvider.java:209 )

他のシステムからoauth2コードを取得しているので、自分自身でa​​ccess_tokenとsecret_tokenを依頼したいと思っています。

答えて

0

まず第一に、refresh_tokenを取得するにはあなたは送信URL内「& ACCESS_TYPE =オフライン& approval_prompt =力」を設定することを行うために、あなたはそれを得るようになるコードを持っている必要がありますコードを取得します。 そして、あなたがこれを設定refresh_tokenを求めることができますが

code=your_code_generated 
client_id=your_client_id 
client_secret=your_client_secret 
redirect_uri=https://oauth2.example.com/code 
grant_type=authorization_code 

POST https://accounts.google.com/o/oauth2/token 

あなたがGoogleのアイデンティティプラットフォームで詳細を見ることができますhttps://developers.google.com/identity/protocols/OAuth2WebServer

0

シンプルが設定された認証コードの後に​​次の行を追加します。パラメータ:

request.setPreservedState(new Object()); 
関連する問題