2017-02-13 1 views
2

Ich verwende adal.js für meine Website für die AAD-Authentifizierung. Nach dem Decodieren des AAD-Tokens sieht das aud anders aus, es ist die App-API in AAD. Wenn ich jedoch versuche zu verstehen, wie AAD in verschiedenen Szenarien funktioniert, zeigt fast das gesamte Beispiel der Dokumentation des AAD-Tokens aud als Ressourcen-URL, wie http://contoso.com/.AAD-Token: Warum zeigt aud manchmal App-ID an, manchmal ist es die App-URL?

Basierend auf meinem Verständnis bedeutet aud, dass dieses Token ausgegeben wird. Es gibt keine Beschränkung auf das, was es eigentlich sein sollte.

Aber ich bin neugierig, was der Hauptgrund für dieses inkonsistente Verhalten von Aud von AAD ist.

Warum kann es manchmal app-id sein, und eine URL manchmal sein? Warum nicht App die ganze Zeit oder URL die ganze Zeit?

Konnte jemand helfen, einige Gedanken zu teilen?

Danke.

Antwort

1

ADAL.JS behandelt 2 Arten von Tokens: id_token und access_token. id_token stellt eine Identität des Benutzers dar, der sich in Ihrer Anwendung angemeldet hat. Sehr grob enthält es nur 2 Stück - die ID des Benutzers, der die Anmeldeinformationen und die ID der Anwendung, die das Token erworben hat, zur Verfügung gestellt. Im Falle von id_token ist der Wert von aud Guid und entspricht der AppId der Anwendung, die das Token erworben hat. Aus Sicht von OAUTH v2 ist dies die gleiche Anwendung, die Ressourcen enthält, auf die der Benutzer zugreifen möchte.

Apropos Access_Token - es stellt nicht nur die beiden oben genannten, den Benutzer und die Acquiring-Anwendung, sondern auch eine Anwendung mit einer Reihe von Ressourcen, auf die der Benutzer zugreifen soll. Diese zweite Anwendung, die in den meisten Fällen durch einen aud-Anspruch repräsentiert wird, ist ein Uri, der den Namen des Dienstprinzipals (oder App ID Uri oder IdentifierUri) darstellt - all diese sind Synonyme. Dieser Wert ist eine Möglichkeit, von einer Client-AAD-Anwendung auf eine Server-AAD-Anwendung zu verweisen, die geschützte Ressourcen enthält.

Also fragt ADAL.JS zuerst nach den Anmeldeinformationen eines Benutzers und erwirbt ein id_token und sendet dann eine zusätzliche Anfrage an den AAD-Endpunkt, um access_token zu erhalten. Wenn Sie sich diese beiden Token ansehen, werden Sie im audit-Anspruch, wie oben erläutert, verschiedene Arten von Werten sehen.

Es ist auch möglich, eine Guid im aud-Anspruch für access_tokens zu haben - dass Guid der AppId der Ressourcenanwendung entspricht. Wenn Sie also einen Code haben, der den Wert analysiert, muss er nicht nur zur Verarbeitung bereit sein Uris aber auch Guids.

2

Der "AUD" -Wert im Token sollte mit dem "Resource" -Wert in der Token-Anfrage übereinstimmen. Wenn Sie ein Token anfordern, bei dem Sie die Ressource als App-ID angeben, erhalten Sie einen AUD-Wert mit einer GUID. Andernfalls, wenn Sie einen App-ID-URI verwenden, erhalten Sie die URL zurück.

Als Ressourcenentwickler ist es wichtig, dass Sie Ihre API so programmieren, dass Sie beide Formen von Token akzeptieren, da beide für den Zugriff auf Ihre Ressource gültig sein sollten. Ich glaube, OWIN kümmert sich schon darum für Sie.

Lassen Sie mich wissen, ob dies hilft!

+1

Vielen Dank! Wenn ich meine adal.js-Konfiguration aktualisiere, um die Ressource als meine App-ID uri zu ändern, habe ich den AAD-Fehler AADSTS90009 erhalten (Details finden Sie in diesem Beitrag: http://stackoverflow.com/questions/42006468/oauth-2-0-and- azure-active-directory-error-aadsts90009) Ich denke, für die Website kann ich nur App-ID übergeben.Dann sollte das Backend beide überprüfen ... –

Verwandte Themen