2017-01-18 5 views
1

Kontext:Azure-API-Management OAuth 2.0 Ressourcen Besitzer Passwort-Client-ID

  • Meine Software-Anwendung ist eine Multi-Tenant-Anwendung, die Kunden in anmelden können und ihre eigenen clientIds erzeugen mit einem Ressourceneigentümer Passwort Fluss verwenden OAuth-Anfrage

  • Unser OAuth 2.0-Autorisierungsserver ist in WebAPI integriert und erbt von der von Microsoft bereitgestellten Microsoft.Owin.Security.OAuth.OAuthAuthorizationServerProvider-Klasse. Derzeit unterstützen wir nur eine Strömung (Ressourceneigentümer Kennwort) ein Token zu erhalten, die wie folgt aussieht:

    POST /api/v1.0/token HTTP/1.1 
    Host: api.mysoftwareapp.com 
    
    UserName={username}&Password={password}&grant_type=password&client_id={client_id} 
    
  • Nachdem wir die Anmeldeinformationen & Client-ID bestätigen, senden wir ein Zugriffstoken von der Microsoft generiert zurück. Owin.Security.OAuth.OAuthAuthorizationServerProvider-Basisklasse. Um auf eine Ressource zuzugreifen, müsste ein Benutzer das access_token im Berechtigungsheader als Träger-Token bereitstellen. Die Client-ID muss nicht erneut eingegeben werden. Beispiel unten:

    GET /api/v1.0/Partners HTTP/1.1 
    Host: api.mysoftwareapp.com 
    Authorization: Bearer this_is_where_the_token_goes 
    

Ich möchte das Entwicklerportal Funktion von Azure-API-Management implementieren und ermöglichen es für meine Kunden zur Eingabe der Lage sein, ihre eigenen Benutzernamen, ein Passwort und Client-ID beim Herstellen Testanrufe , so dass sie Daten im Kontext ihres Mandanten zurückbekommen (und schließlich - Ratenbegrenzung durch Client-ID aktivieren).

Im Verlag Portal unter Security-> OAuth 2.0, ich habe:

  • geprüft Nur die Art Erteilung Ressourcen Eigentümer-Passwort.
  • Angegeben meine Autorisierungsanforderungsmethode als POST.
  • Meine Token-Endpunkt-URL hinzugefügt.
  • grant_type/password als zusätzlicher body-Parameter hinzugefügt.
  • Die Anmeldeinformationen des Ressourceneigentümers wurden leer gelassen.

Ich habe auch die folgenden getan, da sie erforderlich waren, aber ich glaube nicht aufgrund gilt nur Ressourceneigentümer Passwort-Unterstützung, und Umgang mit Client-Registrierungen durch meine eigene Anwendung:

  • Hinzugefügt mein Autorisierungsendpunkt-URL
  • Ausgewählt 'In the Body' als meine Client-Authentifizierungsmethode.
  • Falsche Client-Anmeldeinformationen hinzugefügt.
  • Eine falsche URL für die Clientregistrierungsseite hinzugefügt.

Hier ist ein Screenshot davon: enter image description here

Als ich in das Entwickler-Portal navigieren und einen Endpunkt anzuzeigen, kann ich wählen ‚Ressource onwer Kennwort‘ unter meinem Auth-Server. Wenn ich dies jedoch auswähle, zeigt ein Popup, dass ich nur meinen Benutzernamen und mein Passwort eingeben darf, NICHT meine Client-ID.

Wie richte ich Azure API Management so ein, dass ein Benutzer auch die Client-ID angeben kann, die beim Einrichten der Autorisierung verwendet werden soll - oder müssten wir unsere API so ändern, dass die Client-ID bei bestimmten Aufrufen erforderlich ist Ressourcen statt beim Anfordern eines Token? Diese

ist, was ich brauchen würde:

Screenshot of what I'm looking for.

Antwort

0

Um diese Werte in dem POST-Körper zu passieren, müssen Sie die Client-Authentifizierungsmethode ändern von „basic“ auf „post“.

Zum Verlag Sicherheit Portal, und ändern Sie die OAuth2-Server-Einstellungen wie unten zu sein:

enter image description here

+1

Hey Kevin, danke für die Antwort. Ich habe das geändert, bekomme aber immer noch nicht, was ich brauche - ich brauche die Möglichkeit, dass ein Entwickler eine Client-ID eingeben kann, wenn er ein Token anfordert. Ich habe den ursprünglichen Post mit einem Screenshot aktualisiert, wonach ich suche. – tarun713