2017-03-17 7 views
0

私はAADログインを介してユーザーを認証するサイトベースのWebアプリケーションを持っています。ログインが成功すると、ユーザーはアクセストークンを持つアプリケーションにリダイレクトされます(この部分はすべてadal_angular.js/adal.jsを使用して実行されます)「user_impersonation」トークンを使用したAcquireTokenAsyncからの応答はありません

トークンは、新しいトークンを取得するサイトベースのAPIに渡されますユーザーの代わりに、この例(https://github.com/Azure-Samples/active-directory-dotnet-webapi-onbehalfof)に従ってダウンストリームAPIを呼び出すことができます。

下流のAPIは、このプロセスを繰り返して、別のトークンをさらに下流の別のAPIを呼び出すようにします。ここに問題があります。

ここでAcquireTokenAsync()を呼び出すと、コールから何の応答も得られません。 *編集:いいえレスポンスは、私は、私はすべてのURLが表示されませんHTTPトラフィックをトレースするフィドラーを使用して、AzureのAADからの応答がない*

私は気づいAcquireTokenAsync呼び出しの一部としてヒットしていることを意味しません私はこの時点で使用しているトークンは、 "user_impersonation"トークンであり、トークンはサイトベースのAPIによって受信されたものではありません。これは重要ですか?

このアーキテクチャをサポートする必要がありますか?

+0

このシナリオはサポートされています。この問題を解決できるはずです。 /マルチテナントの場合、ユーザーはミドル層サービス2が最終的なダウンストリームAPIに同意することに同意しませんでした。これが実際問題であれば、中間層から管理者の同意を得ることができます。いずれかの方法で、フィドラーを使用して、AzureADからの応答がないか、またはエラーが戻ってきてその情報であなたの投稿を編集する必要があるかどうかを確認する必要があります。 –

答えて

0

ここでの問題は、自分のwebapiでの非同期メソッドの使用でした。 WebAPIで非同期メソッドを呼び出す場合は、独自のWeb APIメソッドを非同期としてマークする必要があります。 ASP.Netがコントローラで非同期メソッドを呼び出すことを知らない場合、デッドロックが発生する可能性があります。 (良い説明はここにあります:http://blog.stephencleary.com/2012/07/dont-block-o ... Webアプリケーションの非同期メソッドで.Resultを使用しないでください。

関連する問題