2016-11-18 5 views
0

サービスからAuthenticationContext.AcquireTokenを呼び出すと、送信しているトークンに必要なクレームがないため、特定の状況でAdalExceptionがスローされます。 AcquireTokenを呼び出したときの応答には、JSONが含まれています。そのJSON(具体的には不足している申し立て情報)を取得できるようにしたいので、その不足しているクレームをユーザーに再認可しようとすることができます。AdalExceptionからJSON応答を取得するにはどうすればよいですか?

AcquireTokenの呼び出しからAdalExceptionが検出されたら、どのようなクレームが見つからないかをJSONレスポンスでどのように取得できますか?私はAdalException上のInnerExceptionから応答ストリームを取得しようとした場合:

catch (AdalException ex) 
{ 
    WebException webex = (WebException)ex.InnerException; 
    WebResponse response = webex.Response; 
    Stream responseStream = response.GetResponseStream(); 
    ... 

...その後、私が取得responseStreamはすべてfalseに設定CanRead、CanSeek、CanWriteおよび特性を有しています。したがって、実際にはストリームから読み取ることができないため、欠落しているclaimパラメータを取得する方法がわかりません。

+0

「AcquireToken」メソッドを呼び出した後の正確な例外メッセージは何ですか?そして、あなたが開発しているコードを教えてください。私たちはトークンを取得するという主張を送っていませんでした。代わりに、Auzre ADはあなたが統合していた[OAuth 2.0](https://tools.ietf.org/html/rfc6749)認証フローに基づいたパラメータを要求します。 –

+0

ご覧になるコードの部分を教えてください。クライアント/サービスアプリケーションを含む認証コードは、数千行になる可能性があります。ここにはどの部分が関係していますか?クライアントでは、WebAuthenticationCoreManager.GetTokenSilentlyAsync()を呼び出します。これにより、私たちのサービスを呼び出すときにベアラのHTTPヘッダーに埋め込むトークンがアプリケーションに与えられます。私たちのサービスは、(ClaimsPrincipal.Current.Identities.First()。BootstrapContextを呼び出して)ヘッダーを読み取り、それをAuthenticationContext.AcquireTokenに渡します。このメッセージで例外がスローされます: –

+0

{"AADSTS50079:管理者の設定が変更されたか、新しい場所に移動したため、マルチファクタ認証に登録して '00000002-0000-0ff1-ce00関連ID:d92e3da9-6bf2-446e-afc2-ca1e91d5fefe \ r \ nTimestamp:2016-11-21 17:00:56Z "-000000000000 '。\ r \ nTrace ID:9dd52cb2-f230-4782-9c5a-b6cc11cfd5b3 \ }。クレーム=%7B%22access_token%22%3A%7B%22polids%22%3A%7B%22%22%%3A%2C%22%%22%3A%AESから取得したJSONレスポンスには、クレームパラメータがありません。 %5B%22d37c654b-b508-48ff-867c-77134090a605%22%5D%7D%7D%7D。 –

答えて

0

サーバーJSONレスポンス全体を返す修正は、ADAL v3で行われます。 Githubリンク: - https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/issues/513 まだADAL v2では利用できません。

+0

完全性のために、v3を取得したら、exを使用してAdalExceptionからサーバーからJSONを取得できます。InnerException.InnerException.Message(exはAdalExceptionです) –

関連する問題