Die Autorisierungscodefluss + PKCE ist ein OpenId Connect-Flow, 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 für Code-Austausch oder PKCE ist eine Abkürzung. Benutzer müssen im PKCE-Prozess kein Client-Geheimnis übermitteln, was sich in dieser Hinsicht erheblich vom herkömmlichen Autorisierungscode-Flow unterscheidet. Da eingebettete Geheimnisse im Quellcode nicht erforderlich sind, verringert PKCE die Sicherheitsrisiken für native Apps, indem es das Potenzial für Reverse Engineering begrenzt.
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 der Client_Secreterstellt die Client-App einen eindeutigen Zeichenfolgenwert. Code-Verifizierer, die es hasht und kodiert als Code-HerausforderungWenn die Client-App den ersten Teil des Autorisierungscode-Flows initiiert, sendet sie einen gehashten Code-Herausforderung.
Sobald der Benutzer sich authentifiziert hat und der Autorisierungscode an die Client-App zurückgegeben wird, fordert diese eine Zugangstoken im Austausch gegen den Autorisierungscode.
In diesem Schritt muss die Client-App den ursprünglichen eindeutigen Zeichenfolgenwert in den Code-Verifizierer Parameter. Wenn die Codes übereinstimmen, ist die Authentifizierung abgeschlossen und ein Zugangstoken wird zurückgegeben.
PKCE-Authentifizierungsablauf
Die Prozesse ähneln denen von OAuth weil das PKCE-erweiterter Autorisierungscodefluss baut auf dem herkömmlichen Autorisierungscode-Flow auf.

- 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?
Der einfachste Weg, den Authorization Code Flow mit PKCE zu implementieren, besteht darin, unseren Native Schnellstarts. (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.
Weitere Ressourcen:
miniOrange
Autorin




Hinterlasse einen Kommentar