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
durch diecode_verifier
usingS256
Verschlüsselung. -
Der Client leitet den Browser zusammen mit der generierten zur OAuth2-Anmeldeseite.
code_challenge
. 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 einer
authorization code
. -
Ihre Anwendung sendet diesen Code zusammen mit dem
code_verifier
, zu OAuth2. -
OAuth2 Authorization Server transformiert die
code_verifier
mithilfe dercode_challenge_method
aus dem ursprünglichen Genehmigungsantrag und überprüft das Ergebnis anhand dercode_challenge
. Wenn der Wert beider Zeichenfolgen übereinstimmt, hat der Server überprüft, dass die Anforderungen von demselben Client stammen, und gibt eineaccess token
. -
OAuth2 gibt die
access token
und optional einerefresh token
. -
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 der standardmäßige Autorisierungscode-Fluss leitet Ihre App den Browser des Benutzers zum Autorisierungsserver weiter. /authorize
-Endpunkt. 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 die code_verifier
für später und sendet die code_challenge
zusammen mit der Autorisierungsanfrage an den Autorisierungsserver /authorize
URL.
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
iscode
, da die Anwendung den Grant-Typ Autorisierungscode verwendet. -
redirect_uri
ist der Callback-Speicherort, an den der Benutzeragent zusammen mit demcode
. Dies muss mit einer der Umleitungs-URLs übereinstimmen, die Sie beim Erstellen Ihrer OAuth2-Anwendung angegeben haben. -
code_challenge_method
ist die Hash-Methode, die zur Generierung der Herausforderung verwendet wird, was 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 an die /token
-Endpunkt zusammen mit dem code_verifier
.
code language-none |
---|
|
Beachten Sie die Parameter, die übergeben werden:
-
grant_type
isauthorization_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 Endpunkt /authorize erhalten haben. -
code_verifier
ist der PKCE-Code-Prüfer, den Ihre App in generiert hat. Erstellen des Testschlüssels für den Code Exchange. -
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 |
---|
|