2016-11-18 3 views
0

Wenn ich AuthenticationContext.AcquireToken von unserem Dienst aus rufe, löst es in einer bestimmten Situation eine AdalException aus, weil beim gesendeten Token ein erforderlicher Antrag fehlt. Die Antwort von, wenn ich AcquireToken aufrufe, enthält JSON mit dem Anspruch, der fehlt. Ich möchte in der Lage sein, an diesem JSON (insbesondere die fehlenden Claim-Informationen) zu gelangen, damit ich versuchen kann, den Benutzer mit dem fehlenden Anspruch erneut zu autorisieren.Wie kann ich die JSON-Antwort von einer AdalException abrufen?

Sobald ich die AdalException vom Aufrufen von AcquireToken abfinde, wie bekomme ich die JSON-Antwort, um herauszufinden, welcher Anspruch fehlte? Wenn ich versuche, die Antwort Strom aus dem innerexception auf dem AdalException zu bekommen:

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

... dann die response ich hat die CanRead, CanSeek und CanWrite alle Eigenschaften auf false gesetzt. Folglich bin ich mir nicht sicher, wie ich den fehlenden Claims-Parameter abrufen kann, da ich nicht wirklich von diesem Stream lesen kann.

+0

Was ist die genaue Ausnahmebedingungsnachricht, die Sie erhalten haben, nachdem Sie die AcquireToken-Methode aufgerufen haben? Und bitte zeigen Sie uns den Code, den Sie entwickeln. Wir haben den Anspruch, das Token zu erhalten, nicht gesendet, stattdessen benötigen die Auzre AD den Parameter basierten [OAuth 2.0] (https://tools.ietf.org/html/rfc6749) Autorisierungsablauf, den Sie integriert haben. –

+0

Bitte helfen Sie mir zu wissen, welchen Teil des Codes Sie sehen müssen. Der Autorisierungscode für eine Client/Service-App kann Tausende von Zeilen umfassen. Welcher Teil ist hier relevant? Auf dem Client rufen wir WebAuthenticationCoreManager.GetTokenSilentlyAsync() auf. Das gibt unserer App ein Token, das wir beim Aufruf unseres Dienstes in den Bearer-HTTP-Header eingeben. Unser Service liest den Header (indem er ClaimsPrincipal.Current.Identities.First(). BootstrapContext aufruft) und übergibt ihn dann an AuthenticationContext.AcquireToken. Dies wirft eine Ausnahme mit dieser Nachricht auf: –

+0

{"AADSTS50079: Aufgrund einer Konfigurationsänderung, die von Ihrem Administrator vorgenommen wurde, oder weil Sie an einen neuen Standort gewechselt sind, müssen Sie sich für den Zugriff auf '00000002-0000-0ff1-ce00 bei der Multi-Faktor-Authentifizierung anmelden -000000000000 '. \ R \ nTrace ID: 9dd52cb2-f230-4782-9c5a-b6cc11cfd5b3 \ r \ nKorrelations-ID: d92e3da9-6bf2-446e-afc2-ca1e91d5edfe \ r \ nZeitstempel: 2016-11-21 17: 00: 56Z " }. Die JSON-Antwort, die wir von AAD erhalten, enthält den fehlenden Claims-Parameter: claims =% 7B% 22access_token% 22% 3A% 7B% 22Polids% 22% 3A% 7B% 22essential% 22% 3Atrue% 2C% 22Values% 22% 3A % 5B% 22d37c654b-b508-48ff-867c-77134090a605% 22% 5D% 7D% 7D% 7D. –

Antwort

Verwandte Themen