Verwendung PKCE in Autorisierungscode-Zuweisungen mit Amazon Cognito Cognito-Benutzerpools - Amazon Cognito

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwendung PKCE in Autorisierungscode-Zuweisungen mit Amazon Cognito Cognito-Benutzerpools

Amazon Cognito unterstützt die Authentifizierung mit dem Proof Key for Code Exchange (PKCE) bei der Gewährung von Autorisierungscodes. PKCEist eine Erweiterung der OAuth 2.0-Autorisierungscode-Gewährung für öffentliche Kunden. PKCEschützt vor dem Einlösen abgefangener Autorisierungscodes.

So verwendet Amazon Cognito PKCE

Um mit der Authentifizierung zu beginnenPKCE, muss Ihre Anwendung einen eindeutigen Zeichenkettenwert generieren. Diese Zeichenfolge ist der Code Verifier, ein geheimer Wert, den Amazon Cognito verwendet, um den Client, der die ursprüngliche Autorisierung beantragt, mit dem Client zu vergleichen, der den Autorisierungscode gegen Token tauscht.

Ihre App muss einen SHA256 Hash auf die Codeverifizierer-Zeichenfolge anwenden und das Ergebnis mit Base64 codieren. Übergeben Sie die Hash-Zeichenfolge Autorisieren des Endpunkts als code_challenge Parameter im Anforderungstext an. Wenn Ihre App den Autorisierungscode gegen Token eintauscht, muss sie die Codeverifizierer-Zeichenfolge im Klartext als code_verifier Parameter im Anfragetext an die enthalten. Token-Endpunkt Amazon Cognito führt den gleichen hash-and-encode Vorgang mit dem Code-Verifier durch. Amazon Cognito gibt ID-, Zugriffs- und Aktualisierungstoken nur zurück, wenn es feststellt, dass der Codeverifier zu derselben Codeabfrage führt, die er in der Autorisierungsanfrage erhalten hat.

Um Authorization Grant Flow zu implementieren mit PKCE
  1. Öffnen Sie die Amazon-Cognito-Konsole. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

  2. Wählen Sie User Pools (Benutzerpools) aus.

  3. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus oder erstellen Sie einen neuen Benutzerpool. Wenn Sie einen Benutzerpool erstellen, werden Sie während des Assistenten aufgefordert, einen App-Client einzurichten und die gehostete Benutzeroberfläche zu konfigurieren.

    1. Wenn Sie einen neuen Benutzerpool erstellen, richten Sie einen App-Client ein und konfigurieren Sie die gehostete Benutzeroberfläche während der geführten Einrichtung.

    2. Wenn Sie einen vorhandenen Benutzerpool konfigurieren, fügen Sie eine Domäne und einen öffentlichen App-Client hinzu, falls Sie dies noch nicht getan haben.

  4. Generieren Sie eine zufällige alphanumerische Zeichenfolge, in der Regel eine universell eindeutige Kennung (UUID), um eine Code-Challenge für die zu erstellen. PKCE Diese Zeichenfolge ist der Wert des code_verifier Parameters, den Sie in Ihrer Anfrage an die senden. Token-Endpunkt

  5. Hasht die code_verifier Zeichenfolge mit dem SHA256 Algorithmus. Kodieren Sie das Ergebnis des Hashing-Vorgangs auf Base64. Diese Zeichenfolge ist der Wert des code_challenge Parameters, den Sie in Ihrer Anfrage an die senden. Autorisieren des Endpunkts

    Das folgende Python Beispiel generiert einen code_verifier und berechnet dencode_challenge:

    #!/usr/bin/env python3 import random from base64 import urlsafe_b64encode from hashlib import sha256 from string import ascii_letters from string import digits # use a cryptographically strong random number generator source rand = random.SystemRandom() code_verifier = ''.join(rand.choices(ascii_letters + digits, k=128)) code_verifier_hash = sha256(code_verifier.encode()).digest() code_challenge = urlsafe_b64encode(code_verifier_hash).decode().rstrip('=') print(f"code challenge: {code_challenge}") print(f"code verifier: {code_verifier}")

    Im Folgenden finden Sie ein Beispiel für die Ausgabe des Python Skripts:

    code challenge: Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg code verifier: 9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
  6. Schließen Sie die Anmeldung über die gehostete Benutzeroberfläche mit einer Anfrage zur Gewährung eines Autorisierungscodes mit PKCE ab. Das Folgende ist ein Beispiel: URL

    https://mydomain.us-east-1.amazoncognito.com/oauth2/authorize?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com&code_challenge=Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg&code_challenge_method=S256
  7. Sammeln Sie die Autorisierung code und lösen Sie sie gegen Token mit dem Token-Endpunkt ein. Im Folgenden finden Sie ein Beispiel für eine Anfrage:

    POST /oauth2/token HTTP/1.1 Host: mydomain.us-east-1.amazoncognito.com Content-Type: application/x-www-form-urlencoded Content-Length: 296 redirect_uri=https%3A%2F%2Fwww.example.com& client_id=1example23456789& code=7378f445-c87f-400c-855e-0297d072ff03& grant_type=authorization_code& code_verifier=9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
  8. Überprüfen Sie die Antwort. Sie wird ID-, Zugriffs- und Aktualisierungstoken enthalten. Weitere Informationen zur Verwendung von Amazon Cognito Cognito-Benutzerpool-Token finden Sie unterVerwenden von Token mit Benutzerpools.