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_verifiermitS256Verschlüsselung umwandelt. -
Der Client leitet den Browser zusammen mit dem generierten
code_challengezur 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 codezurück zu Ihrem Programm. -
Ihre Anwendung sendet diesen Code zusammen mit dem
code_verifieran OAuth2. -
OAuth2-Autorisierungs-Server wandelt die
code_verifiermithilfe dercode_challenge_methodder 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 tokenaus. -
OAuth2 gibt die
access tokenund optional einerefresh tokenzurü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_identspricht 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_typeistcode, da die Anwendung den Gewährungstyp Autorisierungs-Code verwendet. -
redirect_uriist der Callback-Speicherort, an den der Benutzeragent zusammen mit demcodeweitergeleitet wird. Diese muss mit einer der Umleitungs-URLs übereinstimmen, die Sie beim Erstellen Ihrer OAuth2-Anwendung angegeben haben. -
code_challenge_methodist die Hash-Methode, die zum Generieren der Challenge verwendet wird, was für Workfront Oauth2-Anwendungen, die PKCE verwenden, immerS256ist. -
code_challengeist 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 /token an den code_verifier-Endpunkt Ihres Autorisierungsservers.
| code language-none |
|---|
|
Beachten Sie die Parameter, die übergeben werden:
-
grant_typeistauthorization_code, da die App den Gewährungstyp Autorisierungs-Code verwendet. -
redirect_urimuss mit dem URI übereinstimmen, der zum Abrufen des Autorisierungscodes verwendet wurde. -
codeist der Autorisierungs-Code, den Sie vom Endpunkt /authorize erhalten haben. -
code_verifierist der PKCE-Code Verifier, den Ihre App in " des Korrekturabzugsschlüssels für den Code-Austausch“ . -
client_ididentifiziert 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 dem folgenden:
| code language-none |
|---|
|