2017-07-18 7 views
2

AZURE ADを使用して認証しようとしています。 [https://github.com/Azure-Samples/active-directory-java-webapp-openidconnect][1]AZURE AD ADAL "エラー": "invalid_grant"、 "error_description": "AADSTS70000:送信データパーサーの失敗:認証コードが不正または無効です

私はAUTHORIZEの呼び出しを行うと、認証コードを取得することができています。のOAuth2ジャーからacquireTokenByAuthorizationCodeメソッドを使用してアクセストークンを取得するために認証コードを渡すこと。ここで私は以下のエラーを取得しています。

"error": "invalid_grant"、 "error_description": "AADSTS70000:送信データパーサーの失敗:認証コードはmです改ざんされているか無効である。

grant_type = authorization_codeをacquireTokenByAuthorizationCodeメソッドに渡すにはどうすればよいですか?

投稿された投稿リクエストを確認するにはどうすればよいですか?私はクロムのネットワークセクションでそれを見ることができませんか?

 String authCode = authorizationCode.getValue(); 
     ClientCredential credential = new ClientCredential(clientId, 
       clientSecret); 
     AuthenticationContext context; 
     AuthenticationResult result = null; 
     ExecutorService service = null; 
     try { 

      ThreadFactory factory = ThreadManager.currentRequestThreadFactory(); 
      service = Executors.newCachedThreadPool(factory); 

      context = new AuthenticationContext(authority + tenant + "/", true, 
        service); 

      Future<AuthenticationResult> future = context 
        .acquireTokenByAuthorizationCode(authCode, new URI(
          currentUri), credential, null); 

ポスト要求は次のようになります:? 文字列redirectUrl =権威 + this.tenant +「/oauth2/v2.0/token P = b2c_1_abcd &以下

コードですgrant_type = authorization_code &資源= HTTPS%3A%2F%2fgraph.windows.net & REDIRECT_URI =」 + URLEncoder.encode(REDIRECT_URL、 "UTF-8");

太字の情報の入力方法がわかりません。

+0

承認コードを要求している間にscope = offlineを渡すことで、更新トークンを取得できます。アクセストークンを取得するために追加の変更を加える必要がありますか? –

答えて

1

EDIT詳細は後

あなたはv2のエンドポイントを使用している場合は、ADALを使用することはできません。

v2デベロッパーポータルにアプリを登録している場合は、Azure PortalのAzure ADインターフェースを介してアプリを登録する必要があります。 AzureのAD URLにv2.0が含まれていないことを確認してください。


認証コードとトークンを取得するには、あなたが(https://github.com/Azure-Samples/active-directory-java-webapp-openidconnect/blob/master/src/main/java/com/microsoft/aad/adal4jsample/BasicFilter.java#L268-L270acquireTokenByAuthorizationCodeを使用します。

Future<AuthenticationResult> future = context 
       .acquireTokenByAuthorizationCode(authCode, new URI(
         currentUri), credential, null); 

それはAzureのADにWebサーバーから行くので、あなたは、Chromeでの要求は表示されません。ブラウザはチェーンの一部ではありません。 これは、Azure ADにクライアントシークレットを渡しているので、良いことです。 Fiddlerのようなツールを使ってトラフィックを監視することができます。

+0

認証コードを受け取るために使用しているコードを質問に追加できますか? – juunas

+0

コードを追加しました@juunas –

+0

@krishnapriyanukala私の編集を参照してください。 ADALでv2エンドポイントを使用しようとすると、機能しません。 – juunas

関連する問題