Befangen zwischen zwei Fehlern in einer Azure OAuth2-Tokenanforderung

8

Ich implementiere einen OAuth2-Provider für OWIN und Azure Active Director. FWIW, zu diesem Zeitpunkt entspricht die Option OpenId Connect nicht den Anforderungen für diese Arbeit.

Ich erhalte einen Authentifizierungscode und kehre zu meiner Antwort-URL mit dem Status auth_code zurück und stelle die Anforderung für ein Token auf "schema: //login.windows.net/ {myguid} / oauth2 / token". p> %Vor%

Ich bekomme diesen Fehler:

%Vor%

OK, ich füge die Ressourcenoption hinzu:

%Vor%

Ich muss also die richtige App-ID mit meiner Client-ID verknüpft haben. hrrmph! Ich mache eindeutig etwas falsch, aber ich kann es einfach nicht sehen. Irgendwelche Vorschläge?

    
Philip Nelson 08.08.2014, 22:08
quelle

3 Antworten

6

OAuth beschäftigt sich mit 4 Parteien: 1) Ressourceninhaber aka Benutzer 2) Ressourcen-App: in der Regel eine Web-API, die den Zugriff auf Ressourcenbesitzer durch den Benutzer schützt 3) Client-App: eine Web-App oder mobile App oder sogar eine andere Web-API möchte im Auftrag des Benutzers auf die Ressource zugreifen 4) die Berechtigung: der sichere Token-Dienst, der den Benutzer und / oder die Client-App authentifiziert und ein delegiertes Zugriffstoken an den Client ausgibt, um auf die Ressource zuzugreifen.

Ihr Code verwendet den gleichen Bezeichner für die Client-App und die Ressource. Im Wesentlichen versucht er, einen Zugriffstoken für den Zugriff auf sich selbst anzufordern. Es kann argumentiert werden, dass dieses Szenario erlaubt sein sollte - aber es ist nicht heute von Azure AD.

Gehen Sie folgendermaßen vor: Registrieren Sie eine Ressourcenanwendung in Azure AD. Fügen Sie in seinem Manifest eine neue appPermission hinzu (folgen Sie dieser Post ). Wechseln Sie dann zur Konfigurationsseite der Clientanwendung, und blättern Sie nach unten. Fügen Sie im Abschnitt "Berechtigungen für andere Anwendungen" die Ressourcenberechtigung der Clientanwendungsliste "delegierte Berechtigungen" hinzu.

Verwenden Sie jetzt die AppIDURI oder die ClientID der Ressourcenanwendung in Ihrer OAuth-Anforderung, und das sollte funktionieren.

Hoffe, das hilft.

    
Dushyant Gill 08.08.2014, 23:55
quelle
18

Ich hatte das gleiche Problem, ich wollte nur eine Benutzeranmeldung durchführen.

Nachdem ich 1000 Dinge ausprobiert habe (mit diesem Beitrag unter anderem), habe ich herausgefunden, dass ich die Microsoft.Azure.ActiveDirectory-ID als Ressourcenparameter verwenden kann. Auf diesem Weg muss ich keine zweite App erstellen.

Ссылка

%Vor%

und habe das Token

bekommen

UPDATE:

Die azurblaue Unterstützung schlug mir vor, Ссылка zu verwenden:

%Vor%     
wutzebaer 06.07.2015 12:11
quelle
7

Die Verwendung des Bereichs "openid" in der Autorisierungsanforderung sollte einen OpenID Connect-Ablauf auslösen, der ein id_token zurückgibt und keine Ressource erfordert.

    
gye 15.09.2015 14:43
quelle