Der Authorization Code Flow + PKCE ist ein OpenID Connect-Ablauf, der speziell für die Authentifizierung von Benutzern nativer oder mobiler Anwendungen entwickelt wurde.
Anwendungen ohne die Möglichkeit, ein Clientgeheimnis zu speichern, wie etwa native oder Single-Page-Apps, verwenden diesen Berechtigungstyp (SPA).
Proof Key for Code Exchange (PKCE) ist eine Abkürzung. Im Gegensatz zum herkömmlichen Autorisierungscode-Verfahren müssen Benutzer bei PKCE kein Client-Geheimnis angeben. Da keine eingebetteten Geheimnisse im Quellcode benötigt werden, verringert PKCE die Sicherheitsrisiken für native Apps, indem es das Potenzial für Reverse Engineering einschränkt.
Warum ist eine PKCE-Authentifizierung erforderlich?
Einige zusätzliche Sicherheitsrisiken entstehen, wenn öffentliche Clients (wie native und Single-Page-Programme) Zugriffstoken anfordern, die nicht allein durch den Autorisierungscodefluss angesprochen werden.
Das ist weil
Native Apps:
Das Client-Geheimnis kann nicht sicher gespeichert werden. Durch das Dekompilieren der App wird das Client-Geheimnis offengelegt, das an die App gebunden ist und für alle Benutzer und Geräte gleich ist. Es kann ein benutzerdefiniertes URL-Schema verwenden, um Weiterleitungen zu erfassen (z. B. MyApp://), wodurch bösartige Anwendungen möglicherweise einen Autorisierungscode von Ihrem Autorisierungsserver erhalten können.
Einzelseitenanwendungen:
Ein Client Secret kann nicht sicher gespeichert werden, da der gesamte Quellcode dem Browser zur Verfügung steht. OAuth 2.0 bietet eine Variante des Authorization Code Flow, die unter diesen Umständen einen Proof Key for Code Exchange (PKCE) verwendet (definiert in OAuth 2.0 RFC 7636).
Die aufrufende Anwendung erstellt ein Geheimnis namens Code Verifier, das vom Autorisierungsserver im PKCE-erweiterten Authorization Code Flow bestätigt werden kann. Um einen Autorisierungscode zu erhalten, erstellt die aufrufende App auch einen Transformationswert des Code Verifier, den sogenannten Code Challenge, und liefert ihn über HTTPS. Auf diese Weise kann ein feindlicher Angreifer den Autorisierungscode nur abfangen und den Code Verifier nicht verwenden, um ihn gegen ein Token auszutauschen.
Wie funktioniert es?
Anstelle des Client-Geheimnisses erstellt die Client-App einen eindeutigen String-Wert, code_verifier , der gehasht und als code_challenge kodiert wird . Wenn die Client-App den ersten Teil des Autorisierungscode-Ablaufs initiiert, sendet sie einen gehashten code_challenge.
Sobald sich der Benutzer authentifiziert hat und der Autorisierungscode an die Client-App zurückgegeben wurde, fordert diese im Austausch für den Autorisierungscode ein Zugriffstoken an.
In diesem Schritt muss die Client-App den ursprünglichen eindeutigen Zeichenfolgenwert im Parameter „code_verifier“ angeben . Stimmen die Codes überein, ist die Authentifizierung abgeschlossen und ein Zugriffstoken wird zurückgegeben.
PKCE-Authentifizierungsablauf
Die Prozesse ähneln stark denen von OAuth , da der PKCE-erweiterte Autorisierungscode-Ablauf auf dem herkömmlichen Autorisierungscode-Ablauf aufbaut.

- Innerhalb der Anwendung wählt der Benutzer Login.
- Das SDK für miniOrange erstellt einen kryptografisch zufälligen Code-Verifizierer und daraus eine Code-Challenge.
- Der Benutzer wird an den miniOrange-Autorisierungsserver weitergeleitet (/authorize-Endpunkt) über das miniOrange SDK zusammen mit der Code-Challenge.
- Der Benutzer wird zur Anmeldung und Autorisierung durch Ihren miniOrange Autorisierungsserver.
- Nachdem sich der Benutzer mit einer der vordefinierten Anmeldeoptionen authentifiziert hat, wird möglicherweise eine Zustimmungsseite mit den Berechtigungen angezeigt, die miniOrange der Anwendung erteilt.
- Wenn der Benutzer mit einem Autorisierungscode, der nur einmal gültig ist, zur Anwendung zurückgeleitet wird, zeichnet Ihr miniOrange-Autorisierungsserver die Code-Herausforderung auf.
- Dieser Code wird zusammen mit dem in Schritt 2 erstellten Code-Verifizierer über das miniOrange SDK an den miniOrange-Autorisierungsserver (/oauth/token-Endpunkt) gesendet.
- Die Code-Challenge und der Code-Verifier werden von Ihrem miniOrange-Autorisierungsserver überprüft.
- Eine Antwort von Ihrem miniOrange-Autorisierungsserver enthält ein Zugriffstoken und ein ID-Token (und optional ein Aktualisierungstoken).
- Der Zugriffstoken kann von Ihrer Anwendung verwendet werden, um eine API zu kontaktieren und auf Benutzerdaten zuzugreifen.
- Die angeforderten Daten werden von der API zurückgegeben.
Wie implementiere ich PKCE mit miniOrange?
Die einfachste Möglichkeit, den Autorisierungscode-Flow mit PKCE zu implementieren, besteht darin, unseren nativen Schnellstartanleitungen zu folgen . (Diese Einrichtungsanleitungen helfen Ihnen bei der Einrichtung).
Je nach Anwendungstyp können Sie auch unsere SDKs für mobile oder Single-Page-Apps verwenden:
Herunterladen Mobile SDKs.



Hinterlasse einen Kommentar