2017-08-21 4 views
3

私はADの使用を複数のアプリケーションの認証と承認に活用するために取り組んでおり、現在このプロセスの実装方法を検討中です。ADAL JS - 取得トークン:タイムアウトによりトークン更新操作が失敗しました

これは、WebアプリケーションからWebアプリケーションへのフローです。

私はAuthenticationContextインスタンスを作成し、それをサインインするために使用します。 (コード組織がデモの目的のために簡略化)

this.adal = new AuthenticationContext({ 
    tenant: this.tenantId, 
    clientId: this.clientId, 
    redirectUri: this.redirectUri, 
    callback: this.loginCallback, 
    popUp: true 
}); 

this.adal.login(); 

私は行動が怪しいとなり、そのトークンを取得しようとすると、それはあります。 ADのこのアプリケーションのレジストリには、Microsoft Graph APIで「サインインしてユーザープロファイルを読み取る」アクセス許可が付与されていると言えます。

エラーはコンソールに次のように書き込まれます。「タイムアウトによりトークンの更新操作が失敗しました。 whilestトークンはnullオブジェクトとして書き込まれます。 Chromeでページを検査しながら、「ネットワーク」タブを簡単に見には、このようなリソースを明らかに:

authorize?response_type=token&client_id=xxxxx&resource=xxxxx&redirect_uri=http://localhost:8080(.....) 

のステータスは、リソースが302

は任意の手掛かりを得たと述べていますか?ありがとう!

+0

ネットワークトレースを調べて、リクエストが実際にハングしているか、何らかのエラーが発生しているかどうかを確認してください。また、何回か試してみましたが、一貫して起こっていますか? –

答えて

0

[OK]を...私がこの記事click for articleから少し助けを借りて、それを考え出したように思えるし、このclick for very cool info

私は、ログインコールバック

this.adal.acquireToken("https://graph.microsoft.com", function(error, token) { 
    console.log(error); 
    console.log(token); 
}); 
に、次のコードのビットを交換しました

var cachedToken = this.adal.getCachedToken(client_id_goes_here); 
    if (cachedToken) { 
     this.adal.acquireToken("https://graph.microsoft.com", function(error, token) { 
      console.log(error); 
      console.log(token); 
     }); 
    } 

そして最後にちょうどacquireToken方法リダイレクト後に実行される関数にコード行を追加します。このため

sをページに追加してください:

this.adal.handleWindowCallback(); 

これは、この問題で実行されている他の人にも役立ちます。

関連する問題