Konfigurieren und verwenden Sie die benutzerdefinierten OAuth 2-Anwendungen Ihres Unternehmens mithilfe des PKCE-Flusses
PKCE ist ein sicherer Autorisierungsfluss, der gut mit dynamisch aktualisierten Programmen wie mobilen Apps funktioniert, aber für alle OAuth2-Clients nützlich ist. Anstelle eines statischen Client-Geheimnisses verwendet PKCE eine dynamisch generierte Zeichenfolge, wodurch das Risiko eines Lecks des Client-Geheimnisses vermieden wird.
PKCE - Übersicht
Ein PKCE-Fluss umfasst die folgenden Schritte. Die Schritte in diesem Abschnitt dienen nur informativen Zwecken. Informationen zum Ausführen dieser Verfahren finden Sie in anderen Abschnitten dieses Artikels.
-
Der Client erstellt die
code_challenge
, indem er diecode_verifier
mitS256
Verschlüsselung umwandelt. -
Der Client leitet den Browser zusammen mit dem generierten
code_challenge
zur OAuth2-Anmeldeseite weiter. Sie müssen Ihre App (Client) registrieren, damit OAuth2 die Autorisierungsanfrage akzeptieren kann. Nach der Registrierung kann Ihre App den Browser zu OAuth2 umleiten. -
Der OAuth2-Autorisierungs-Server leitet die Authentifizierungsaufforderung an den Benutzer weiter.
-
Der Benutzer authentifiziert sich mit einer der konfigurierten Anmeldeoptionen und sieht möglicherweise eine Einverständnisseite, auf der die Berechtigungen aufgeführt sind, die OAuth2 der Anwendung erteilt.
-
OAuth2 leitet mit einem
authorization code
zurück zu Ihrem Programm. -
Ihre Anwendung sendet diesen Code zusammen mit dem
code_verifier
an OAuth2. -
OAuth2-Autorisierungs-Server wandelt die
code_verifier
mithilfe dercode_challenge_method
der ursprünglichen Autorisierungsanfrage um und vergleicht das Ergebnis mit dercode_challenge
. Wenn der Wert beider Zeichenfolgen übereinstimmt, hat der Server überprüft, ob die Anfragen vom selben 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 Ressourcen-Server aufzurufen, z. B. eine API im Namen der Benutzerin oder des Benutzers.
-
Der Ressourcen-Server validiert das Token, bevor er auf die Anfrage antwortet.
Konfigurieren des Programms
Bevor Sie die Autorisierung implementieren können, müssen Sie Ihre App in OAuth2 registrieren, indem Sie eine App-Integration von Workfront aus erstellen.
Anweisungen zum Erstellen der OAuth2-Anwendung finden Sie unter Erstellen einer einseitigen OAuth2-Web-Anwendung mit PKCE in Erstellen von OAuth2-Anwendungen für Workfront-Integrationen
Erstellen des Proof-Schlüssels für den Code-Austausch
Ähnlich wie beim standardmäßigen Autorisierungs-Code-Fluss leitet Ihre App den Browser des Benutzers zum /authorize
-Endpunkt Ihres Autorisierungs-Servers um. In diesem Fall müssen Sie jedoch auch eine Code Challenge weitergeben.
Als Erstes generieren Sie einen Code Verifier und eine Challenge.
Sie müssen Code in Ihrer Client-Anwendung hinzufügen, um den Code Verifier und die Code Challenge zu erstellen.
Der PKCE-Generatorcode 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 die /authorize
URL Ihres Autorisierungsservers.
Autorisierungs-Code anfordern
Wenn Sie den standardmäßigen benutzerdefinierten Autorisierungs-Server verwenden, würde Ihre Anfrage-URL in etwa wie folgt aussehen:
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 einseitigen OAuth2-Web-Anwendung mit PKCE in Erstellen von OAuth2-Anwendungen für Workfront-Integrationen.
-
response_type
istcode
, da die Anwendung den Gewährungstyp Autorisierungs-Code verwendet. -
redirect_uri
ist der Callback-Speicherort, an den der Benutzeragent zusammen mit demcode
weitergeleitet wird. Diese muss mit einer der Umleitungs-URLs übereinstimmen, die Sie beim Erstellen Ihrer OAuth2-Anwendung angegeben haben. -
code_challenge_method
ist die Hash-Methode, die zum Generieren der Challenge verwendet wird, was für Workfront Oauth2-Anwendungen, die PKCE verwenden, immerS256
ist. -
code_challenge
ist die Code Challenge, die für PKCE verwendet wird.
Code gegen Token austauschen
Um den Autorisierungs-Code gegen ein Zugriffstoken einzutauschen, ü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 Gewährungstyp Autorisierungs-Code verwendet. -
redirect_uri
muss mit dem URI übereinstimmen, der zum Abrufen des Autorisierungscodes verwendet wurde. -
code
ist der Autorisierungs-Code, den Sie vom Endpunkt /authorize erhalten haben. -
code_verifier
ist der PKCE-Code Verifier, den Ihre App in " des Korrekturabzugsschlüssels für den Code-Austausch“. -
client_id
identifiziert Ihren Client und muss mit dem in OAuth2 vorregistrierten Wert übereinstimmen.
Wenn der Code weiterhin gültig ist und der Code Verifier übereinstimmt, erhält Ihre Anwendung ein Zugriffstoken.
code language-none |
---|
|
Validieren des Zugriffstokens
Wenn Ihre Anwendung eine Anfrage mit einem Zugriffstoken übergibt, muss der Ressourcen-Server sie validieren.
Sie können Ihr Zugriffs-Token mit einem API-Aufruf ähnlich dem folgenden validieren:
code language-none |
---|
|
Aktualisierungstoken anfordern
Um ein Aktualisierungs-Token anzufordern, können Sie einen POST-Aufruf an die API durchführen, ähnlich wie im Folgenden beschrieben:
code language-none |
---|
|