Benutzerdefinierte OAuth 2-Anwendungen Ihres Unternehmens mithilfe des PKCE-Flusses konfigurieren und verwenden
PKCE ist ein sicherer Autorisierungsfluss, der gut mit dynamisch aktualisierten Anwendungen wie Apps funktioniert, aber für alle OAuth2-Clients nützlich ist. Statt eines statischen Client-Geheimnisses verwendet PKCE eine dynamisch generierte Zeichenfolge, wodurch das Risiko eines durchgesickerten Client-Geheimnisses entfällt.
PKCE - Übersicht
Ein PKCE-Fluss umfasst die folgenden Schritte. Die Schritte in diesem Abschnitt werden nur zu Informationszwecken beschrieben. Weitere Informationen zur Durchführung dieser Verfahren finden Sie in anderen Abschnitten dieses Artikels.
-
Der Client erstellt die
code_challenge
, indem er diecode_verifier
mit derS256
-Verschlüsselung transformiert. -
Der Client leitet den Browser zusammen mit dem generierten
code_challenge
zur OAuth2-Anmeldeseite. Sie müssen Ihre App (den Client) registrieren, damit OAuth2 die Autorisierungsanforderung annehmen kann. Nach der Registrierung kann Ihre App den Browser zu OAuth2 umleiten. -
Der OAuth2-Autorisierungsserver leitet die Authentifizierungsaufforderung an den Benutzer weiter.
-
Der Benutzer authentifiziert sich mit einer der konfigurierten Anmeldeoptionen und kann eine Einverständnisseite sehen, auf der die Berechtigungen aufgelistet werden, die OAuth2 der Anwendung erteilt.
-
OAuth2 leitet mit einem
authorization code
zurück zu Ihrer Anwendung. -
Ihre Anwendung sendet diesen Code zusammen mit dem
code_verifier
an OAuth2. -
Der OAuth2-Autorisierungsserver transformiert die
code_verifier
mit demcode_challenge_method
aus der ursprünglichen Autorisierungsanfrage und überprüft das Ergebnis mit demcode_challenge
. Wenn der Wert beider Zeichenfolgen übereinstimmt, hat der Server überprüft, ob die Anforderungen von demselben Client stammen, und gibt einenaccess token
aus. -
OAuth2 gibt die
access token
und optional einerefresh token
zurück. -
Ihre Anwendung kann diese Token jetzt verwenden, um den Ressourcenserver, z. B. eine API, im Namen des Benutzers aufzurufen.
-
Der Ressourcenserver validiert das Token, bevor er auf die Anfrage antwortet.
Anwendung konfigurieren
Bevor Sie die Autorisierung implementieren können, müssen Sie Ihre App in OAuth2 registrieren, indem Sie eine App-Integration aus Workfront erstellen.
Anweisungen zum Erstellen der OAuth2-Anwendung finden Sie unter Erstellen einer OAuth2-Single-Page-Webanwendung mit PKCE in Erstellen von OAuth2-Anwendungen für Workfront-Integrationen .
Erstellen des Testschlüssels für den Code Exchange
Ähnlich wie beim standardmäßigen Autorisierungscode-Fluss leitet Ihre App den Browser des Benutzers an den /authorize
-Endpunkt Ihres Autorisierungsservers weiter. In diesem Fall müssen Sie jedoch auch eine Code-Herausforderung weitergeben.
Ihr erster Schritt besteht darin, einen Code-Prüfer und eine Herausforderung zu erstellen.
Sie müssen Code in Ihrer Client-App hinzufügen, um die Codeüberprüfung und die Codeherausforderung zu erstellen.
Der PKCE Generator-Code erstellt eine Ausgabe ähnlich der folgenden:
code language-none |
---|
|
Ihre App speichert den code_verifier
für später und sendet den code_challenge
zusammen mit der Autorisierungsanfrage an die /authorize
-URL Ihres Autorisierungsservers.
Autorisierungscode anfordern
Wenn Sie den standardmäßigen benutzerdefinierten Autorisierungsserver verwenden, ähnelt Ihre Anforderungs-URL der folgenden:
code language-none |
---|
|
Beachten Sie die Parameter, die übergeben werden:
-
client_id
entspricht der Client-ID der OAuth2-Anwendung, die Sie beim Konfigurieren der Anwendung in der erstellt haben.Anweisungen finden Sie unter Erstellen einer OAuth2-Single-Page-Webanwendung mit PKCE in OAuth2-Anwendungen für Workfront-Integrationen erstellen .
-
response_type
istcode
, da die Anwendung die Art der Gewährung des Autorisierungscodes verwendet. -
redirect_uri
ist der Callback-Speicherort, an den der Benutzeragent zusammen mit demcode
weitergeleitet wird. Dies muss mit einer der Umleitungs-URLs übereinstimmen, die Sie beim Erstellen Ihrer OAuth2-Anwendung angegeben haben. -
code_challenge_method
ist die Hash-Methode, mit der die Herausforderung generiert wird. Sie ist immerS256
für Workfront Oauth2-Anwendungen, die PKCE verwenden. -
code_challenge
ist die Code-Herausforderung, die für PKCE verwendet wird.
Code für Token austauschen
Um den Autorisierungscode gegen ein Zugriffstoken auszutauschen, übergeben Sie ihn zusammen mit dem code_verifier
an den /token
-Endpunkt Ihres Autorisierungsservers.
code language-none |
---|
|
Beachten Sie die Parameter, die übergeben werden:
-
grant_type
istauthorization_code
, da die App den Grant-Typ "Autorisierungscode"verwendet. -
redirect_uri
muss mit dem URI übereinstimmen, der zum Abrufen des Autorisierungscodes verwendet wurde. -
code
ist der Autorisierungscode, den Sie vom /authorize -Endpunkt erhalten haben. -
code_verifier
ist der PKCE-Code-Prüfer, den Ihre App in Erstellen des Testschlüssels für Code Exchange generiert hat. -
client_id
identifiziert Ihren Client und muss mit dem in OAuth2 registrierten Wert übereinstimmen.
Wenn der Code weiterhin gültig ist und die Codeüberprüfung übereinstimmt, erhält Ihre Anwendung ein Zugriffstoken.
code language-none |
---|
|
Zugriffstoken überprüfen
Wenn Ihre Anwendung eine Anforderung mit einem Zugriffstoken übergibt, muss der Ressourcenserver sie überprüfen.
Sie können Ihr Zugriffstoken mit einem API-Aufruf wie dem folgenden validieren:
code language-none |
---|
|
Aktualisierungs-Token anfordern
Um ein Aktualisierungstoken anzufordern, können Sie einen POST-Aufruf an die -API ausführen, ähnlich wie im Folgenden:
code language-none |
---|
|