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.
Der Endpunkt des Token-Ausstellers
Der OAuth 2.0-Token-Endpunkt /oauth2/token gibt JSON-Web-Tokens (JWTs) an Anwendungen aus, die die Zuteilung von Autorisierungscode und Client-Anmeldeinformationen abschließen möchten. Diese Token sind das Endergebnis der Authentifizierung mit einem Benutzerpool. Sie enthalten Informationen über den Benutzer (ID-Token), die Zugriffsebene des Benutzers (Zugriffstoken) und die Berechtigung des Benutzers, seine angemeldete Sitzung beizubehalten (Aktualisierungstoken). OpenID Connect (OIDC) -Relying-Party-Bibliotheken verarbeiten Anfragen an und beantworten Payloads von diesem Endpunkt. Tokens bieten einen überprüfbaren Authentifizierungsnachweis, Profilinformationen und einen Mechanismus für den Zugriff auf Backend-Systeme.
Der Token-Endpunkt gibt einen Access-Control-Allow-Origin: * Antwort-Header zurück. Sie können den Token-Endpunkt von einer browserbasierten Anwendung aus quellübergreifend aufrufen. Beispielsweise können Sie die Erteilung eines Autorisierungscodes mit Proof Key for Code Exchange (PKCE) von einem öffentlichen Client aus abschließen. Amazon Cognito unterstützt auf diesem Endpunkt keine benutzerdefinierten CORS-Ursprungsrichtlinien (Cross-Origin Resource Sharing). Weitere Informationen finden Sie im Abschnitt zu den CORS-Richtlinien von. Vom Benutzerpool verwaltete Anmeldung
Ihr OAuth 2.0-Autorisierungsserver für Benutzerpools gibt JSON-Web-Tokens (JWTs) vom Token-Endpunkt an die folgenden Sitzungstypen aus:
-
Benutzer, die eine Anfrage für die Gewährung eines Autorisierungscodes abgeschlossen haben. Wenn ein Code erfolgreich eingelöst wurde, werden ID-, Zugriffs- und Aktualisierungstoken zurückgegeben.
-
Machine-to-machine (M2M) -Sitzungen, bei denen die Erteilung von Client-Anmeldeinformationen abgeschlossen wurde. Bei erfolgreicher Autorisierung mit dem geheimen Client-Schlüssel wird ein Zugriffstoken zurückgegeben.
-
Benutzer, die sich zuvor angemeldet und Aktualisierungstoken erhalten haben. Bei der Authentifizierung mit Aktualisierungstoken werden neue ID- und Zugriffstoken zurückgegeben.
Anmerkung
Benutzer, die sich mit einem Autorisierungscode anmelden, können bei verwalteter Anmeldung oder über den Verbund ihre Token jederzeit vom Token-Endpunkt aus aktualisieren. Benutzer, die sich mit den API-Vorgängen anmelden
InitiateAuthund ihre Token mit dem Token-Endpunkt aktualisierenAdminInitiateAuthkönnen, wenn die gespeicherten Geräte in Ihrem Benutzerpool nicht aktiv sind. Wenn die gespeicherten Geräte aktiv sind, aktualisieren Sie die Token mit dem entsprechenden API- oder SDK-Token-Aktualisierungsvorgang für Ihren App-Client.
Der Token-Endpunkt wird öffentlich verfügbar, wenn Sie Ihrem Benutzerpool eine Domain hinzufügen. Er akzeptiert HTTP-POST-Anfragen. Verwenden Sie PKCE aus Sicherheitsgründen zusammen mit Ihren Autorisierungscode-Anmeldeereignissen. PKCE überprüft, ob der Benutzer, der einen Autorisierungscode übergibt, derselbe Benutzer ist, der sich authentifiziert hat. Weitere Informationen zu PKCE finden Sie unter IETF RFC 7636.
Weitere Informationen über die App-Clients des Benutzerpools und ihre Gewährungstypen, Client-Geheimnisse, erlaubten Bereiche und Client-IDs finden Sie unter. Anwendungsspezifische Einstellungen mit App-Clients Weitere Informationen zur M2M-Autorisierung, zur Gewährung von Client-Anmeldeinformationen und zur Autorisierung mit Zugriffstoken-Gültigkeitsbereichen finden Sie unter. Bereiche, M2M und Ressourcenserver
Um Informationen über einen Benutzer aus seinem Zugriffstoken abzurufen, geben Sie diese an Ihre UserInfo-Endpunkt oder eine GetUser API-Anfrage weiter. Das Zugriffstoken muss die entsprechenden Bereiche für diese Anfragen enthalten.
Formatieren Sie eine POST-Anforderung für den Token-Endpunkt
Der /oauth2/token Endpunkt unterstützt ausschließlich HTTPS POST. Dieser Endpunkt ist nicht benutzerinteraktiv. Behandeln Sie Token-Anfragen mit einer OpenID Connect (OIDC) -Bibliothek
Der Token-Endpunkt unterstützt client_secret_basic- und client_secret_post-Authentifizierung. Weitere Informationen zur OIDC-Spezifikation finden Sie unter Client-Authentifizierung. https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication
Anfrageparameter im Header
Sie können die folgenden Parameter im Header Ihrer Anfrage an den Token-Endpunkt übergeben.
Authorization-
Falls dem Client ein Geheim-Schlüssel zugestellt wurde, kann der Client seine
client_idund seinclient_secretim Autorisierungs-Header alsclient_secret_basicHTTP-Autorisierung übergeben. Sie können auch dieclient_idund dasclient_secretim Anforderungstext alsclient_secret_post-Autorisierung aufnehmen.Die Autorisierungs-Header-Stringl autet Basic
Base64Encode(client_id:client_secret). Das folgende Beispiel ist ein Autorisierungsheader für einen App-Clientdjc98u3jiedmi283eu928mit einem geheimen Client-Schlüsselabcdef01234567890, der die Base64-encoded Version der Zeichenfolge verwendetdjc98u3jiedmi283eu928:abcdef01234567890:Authorization: Basic ZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkw Content-Type-
Stellen Sie den Wert dieses Parameters auf
'application/x-www-form-urlencoded'ein.
Anfrageparameter im Fließtext
Die folgenden Parameter können Sie im x-www-form-urlencoded Format im Anforderungstext für den Token-Endpunkt anfordern.
grant_type-
Pflichtfeld
Die Art des OIDC-Zuschusses, den Sie beantragen möchten.
Es muss sich entweder um
authorization_codeoderrefresh_tokenoderclient_credentialshandeln. Unter den folgenden Bedingungen können Sie vom Token-Endpunkt aus ein Zugriffstoken für einen benutzerdefinierten Bereich anfordern:-
Sie haben den angeforderten Bereich in Ihrer App-Client-Konfiguration aktiviert.
-
Sie haben Ihren App-Client mit einem Client-Geheimnis konfiguriert.
-
Sie aktivieren die Gewährung von Client-Anmeldeinformationen in Ihrem App-Client.
Anmerkung
Der Token-Endpunkt gibt nur dann ein Aktualisierungstoken zurück, wenn
grant_typeauthorization_code -
client_id-
Optional. Nicht erforderlich, wenn Sie die App-Client-ID im
AuthorizationHeader angeben.Die ID eines App-Clients in Ihrem Benutzerpool. Geben Sie denselben App-Client an, der Ihren Benutzer authentifiziert hat.
Sie müssen diesen Parameter angeben, wenn der Client öffentlich ist und kein Geheimnis hat oder wenn er
client_secret_postautorisiert ist.client_secret client_secret-
Optional. Nicht erforderlich, wenn Sie das Client-Geheimnis im
AuthorizationHeader angeben und wenn der App-Client kein Geheimnis hat.Das App-Client-Geheimnis, falls der App-Client eines hat, für die
client_secret_postAutorisierung. scope-
Optional.
Kann eine Kombination beliebiger Bereiche sein, die Ihrem App-Client zugeordnet sind. Amazon Cognito ignoriert Bereiche in der Anfrage, die für den angeforderten App-Client nicht zulässig sind. Wenn Sie diesen Anforderungsparameter nicht angeben, gibt der Autorisierungsserver einen
scopeZugriffstoken-Anspruch mit allen Autorisierungsbereichen zurück, die Sie in Ihrer App-Client-Konfiguration aktiviert haben. Sie können jeden der für den angeforderten App-Client zulässigen Bereiche anfordern: Standardbereiche, benutzerdefinierte Bereiche von Ressourcenservern und denaws.cognito.signin.user.adminSelf-Service-Bereich für Benutzer. redirect_uri-
Optional. Nicht erforderlich für die Gewährung von Kundenanmeldeinformationen.
Es muss sich um dieselbe
redirect_urihandeln, die verwendet wurde, umauthorization_codein/oauth2/authorizezu bekommen.Sie müssen diesen Parameter angeben, wenn
grant_typejaauthorization_code. refresh_token-
Optional. Wird nur verwendet, wenn der Benutzer bereits über ein Aktualisierungstoken verfügt und neue ID- und Zugriffstoken erhalten möchte.
Um neue Zugriffs- und ID-Tokens für die Sitzung eines Benutzers zu generieren, setzen Sie den Wert von
refresh_tokenauf ein gültiges Aktualisierungstoken, das der angeforderte App-Client ausgegeben hat.Gibt ein neues Aktualisierungstoken mit neuer ID und Zugriffstoken zurück, wenn die Aktualisierungstoken-Rotation aktiv ist. Andernfalls werden nur ID- und Zugriffstoken zurückgegeben. Wenn das ursprüngliche Zugriffstoken an eine API-Ressource gebunden war, behält das neue Zugriffstoken die angeforderte API-URL im
audAnspruch bei. code-
Optional. Nur bei der Erteilung von Autorisierungscodes erforderlich.
Der Autorisierungscode aus einer Autorisierungscode-Erteilung. Sie müssen diesen Parameter angeben, wenn Ihre Autorisierungsanfrage ein
grant_typevon enthieltauthorization_code. aws_client_metadata-
Optional.
Informationen, die Sie an die M2M-Autorisierungsabläufe Lambda-Auslöser für die Vorab-Generierung von Token (Machine-to-Machine) weitergeben möchten. Ihre Anwendung kann Kontextinformationen über die Sitzung sammeln und sie in diesem Parameter übergeben. Wenn Sie das URL-encoded JSON-Format übergeben
aws_client_metadata, bezieht Amazon Cognito es in das Eingabeereignis für Ihre Trigger-Lambda-Funktion ein. Ihre Version für das Ereignis vor dem Token-Trigger oder Ihre globale Lambda-Trigger-Version muss für Version 3 oder höher konfiguriert sein. Amazon Cognito akzeptiert zwar Anfragen an diesen Endpunkt in M2M-Flows mit Autorisierungscode und Client-Anmeldeinformationen, aber Ihr Benutzerpool geht nur bei Anfragen von Client-Anmeldeinformationenaws_client_metadataan den Trigger vor der Token-Generierung über. code_verifier-
Optional. Nur erforderlich, wenn Sie in Ihrer ersten Autorisierungsanfrage
code_challengeParameter angegebencode_challenge_methodhaben.Der generierte Code-Verifier, den Ihre Anwendung in einer Anfrage zur
code_challengeErteilung eines Autorisierungscodes bei Verwendung von PKCE bei der Gewährung von Autorisierungscodes PKCE berechnet hat.
Austausch eines Autorisierungscodes für Token
Die folgende Anforderung generiert nach der Authentifizierung mit einem Autorisierungscode erfolgreich ID-, Zugriffs- und Aktualisierungstoken. Die Anforderung übergibt das Client-Geheimnis im client_secret_basic Format im Header. Authorization
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token& Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=authorization_code& client_id=1example23456789& code=AUTHORIZATION_CODE& redirect_uri=com.myclientapp://myclient/redirect
Die Antwort gibt dem Benutzer neue ID-, Zugriffs- und Aktualisierungstoken mit zusätzlichen Metadaten aus.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj3example",
"token_type": "Bearer",
"expires_in": 3600
}
Client-Anmeldeinformationen mit Basisautorisierung
Die folgende Anfrage von einer M2M-Anwendung fordert die Gewährung von Client-Anmeldeinformationen an. Da für Client-Anmeldeinformationen ein Client-Geheimnis erforderlich ist, wird die Anforderung mit einem Authorization Header autorisiert, der aus der App-Client-ID und dem Schlüssel abgeleitet wird. Die Anfrage führt zu einem Zugriffstoken mit den beiden angeforderten Bereichen. Die Anfrage enthält auch Client-Metadaten, die IP-address Informationen bereitstellen, und ein Token, das an den Benutzer ausgegeben wird, für den diese Gewährung erfolgt. Amazon Cognito übergibt die Client-Metadaten an den Lambda-Trigger vor der Token-Generierung.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=client_credentials& client_id=1example23456789& scope=resourceServerIdentifier1%2Fscope1%20resourceServerIdentifier2%2Fscope2& &aws_client_metadata=%7B%22onBehalfOfToken%22%3A%22eyJra789ghiEXAMPLE%22,%20%22ClientIpAddress%22%3A%22192.0.2.252%22%7D
Amazon Cognito übergibt das folgende Eingabeereignis an den Lambda-Trigger vor der Token-Generierung.
{ version: '3', triggerSource: 'TokenGeneration_ClientCredentials', region: 'us-east-1', userPoolId: 'us-east-1_EXAMPLE', userName: 'ClientCredentials', callerContext: { awsSdkVersion: 'aws-sdk-unknown-unknown', clientId: '1example23456789' }, request: { userAttributes: {}, groupConfiguration: null, scopes: [ 'resourceServerIdentifier1/scope1', 'resourceServerIdentifier2/scope2' ], clientMetadata: { 'onBehalfOfToken': 'eyJra789ghiEXAMPLE', 'ClientIpAddress': '192.0.2.252' } }, response: { claimsAndScopeOverrideDetails: null } }
Die Antwort gibt ein Zugriffstoken zurück. Die Erteilung von Client-Anmeldeinformationen erfolgt für die Autorisierung von Maschine zu Maschine (M2M) und gibt nur Zugriffstoken zurück.
HTTP/1.1 200 OK Content-Type: application/json { "access_token": "eyJra1example", "token_type": "Bearer", "expires_in":3600}
Client-Anmeldeinformationen mit POST-Text-Autorisierung
Die folgende Anforderung zur Gewährung von Client-Anmeldeinformationen enthält den client_secret Parameter im Anforderungstext und keinen Header. Authorization Diese Anfrage verwendet die client_secret_post Autorisierungssyntax. Die Anfrage führt zu einem Zugriffstoken mit dem angeforderten Gültigkeitsbereich. Die Anfrage enthält auch Client-Metadaten, die IP-address Informationen bereitstellen, und ein Token, das an den Benutzer ausgegeben wird, für den diese Gewährung erfolgt. Amazon Cognito übergibt die Client-Metadaten an den Lambda-Trigger vor der Token-Generierung.
POST /oauth2/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded X-Amz-Target: AWSCognitoIdentityProviderService.Client credentials request User-Agent:USER_AGENTAccept: / Accept-Encoding: gzip, deflate, br Content-Length: 177 Referer: http://auth.example.com/oauth2/token Host:auth.example.comConnection: keep-alive grant_type=client_credentials& client_id=1example23456789& scope=my_resource_server_identifier%2Fmy_custom_scope&client_secret=9example87654321& aws_client_metadata=%7B%22onBehalfOfToken%22%3A%22eyJra789ghiEXAMPLE%22,%20%22ClientIpAddress%22%3A%22192.0.2.252%22%7D
Amazon Cognito übergibt das folgende Eingabeereignis an den Lambda-Trigger vor der Token-Generierung.
{ version: '3', triggerSource: 'TokenGeneration_ClientCredentials', region: 'us-east-1', userPoolId: 'us-east-1_EXAMPLE', userName: 'ClientCredentials', callerContext: { awsSdkVersion: 'aws-sdk-unknown-unknown', clientId: '1example23456789' }, request: { userAttributes: {}, groupConfiguration: null, scopes: [ 'resourceServerIdentifier1/my_custom_scope' ], clientMetadata: { 'onBehalfOfToken': 'eyJra789ghiEXAMPLE', 'ClientIpAddress': '192.0.2.252' } }, response: { claimsAndScopeOverrideDetails: null } }
Die Antwort gibt ein Zugriffstoken zurück. Die Erteilung von Client-Anmeldeinformationen erfolgt für die Autorisierung von Maschine zu Maschine (M2M) und gibt nur Zugriffstoken zurück.
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Date: Tue, 05 Dec 2023 16:11:11 GMT x-amz-cognito-request-id: 829f4fe2-a1ee-476e-b834-5cd85c03373b { "access_token": "eyJra12345EXAMPLE", "expires_in":3600, "token_type": "Bearer" }
Erteilung des Autorisierungscodes mit PKCE
Die folgende Beispielanforderung vervollständigt eine Autorisierungsanforderung, die code_challenge Parameter in einer Autorisierungscode-Erteilungsanforderung mit Verwendung von PKCE bei der Gewährung von Autorisierungscodes PKCE enthieltcode_challenge_method.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=authorization_code& client_id=1example23456789& code=AUTHORIZATION_CODE& code_verifier=CODE_VERIFIER& redirect_uri=com.myclientapp://myclient/redirect
Die Antwort gibt ID-, Zugriffs- und Aktualisierungstoken aus der erfolgreichen PKCE-Überprüfung durch die Anwendung zurück.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj3example",
"token_type": "Bearer",
"expires_in": 3600
}
Token-Aktualisierung ohne Aktualisierungstoken-Rotation
Die folgende Beispielanfrage stellt ein Aktualisierungstoken für einen App-Client bereit, bei dem die Aktualisierungstoken-Rotation inaktiv ist. Da der App-Client über ein geheimes Client-Geheimnis verfügt, stellt die Anforderung einen Authorization Header bereit.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=refresh_token& client_id=1example23456789& refresh_token=eyJj3example
Die Antwort gibt eine neue ID und Zugriffstoken zurück.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"token_type": "Bearer",
"expires_in": 3600
}
Token-Aktualisierung mit Token-Rotation
Die folgende Beispielanfrage stellt ein Aktualisierungstoken für einen App-Client bereit, in dem die Aktualisierungstoken-Rotation aktiv ist. Da der App-Client über ein geheimes Client-Geheimnis verfügt, stellt die Anforderung einen Authorization Header bereit.
POST https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token > Content-Type='application/x-www-form-urlencoded'& Authorization=BasicZGpjOTh1M2ppZWRtaTI4M2V1OTI4OmFiY2RlZjAxMjM0NTY3ODkwgrant_type=refresh_token& client_id=1example23456789& refresh_token=eyJj3example
Die Antwort gibt neue ID-, Zugriffs- und Aktualisierungstoken zurück.
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJra1example",
"id_token": "eyJra2example",
"refresh_token": "eyJj4example",
"token_type": "Bearer",
"expires_in": 3600
}
Beispiele für negative Antworten
Bei falsch formatierten Anfragen werden Fehler am Token-Endpunkt generiert. Im Folgenden finden Sie eine allgemeine Übersicht über den Antworttext, wenn Token-Anfragen einen Fehler generieren.
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
{
"error":"invalid_request|invalid_client|invalid_grant|unauthorized_client|unsupported_grant_type"
}
invalid_request-
Der Anforderung fehlt ein erforderlicher Parameter, sie umfasst einen nicht unterstützten Parameter-Wert (außer
unsupported_grant_type) oder sie ist aus anderen Gründen ungültig. Beispielsweise,grant_typeistrefresh_tokenaberrefresh_tokenist nicht enthalten. invalid_client-
Client-Authentifizierung ist fehlgeschlagen. Wenn der Client zum Beispiel
client_idundclient_secretim Autorisierungs-Header enthält, aber kein Client mit dieserclient_idund diesemclient_secretexistiert. invalid_grant-
Das Refresh-Token wurde widerrufen.
Der Autorisierungs-Code wurde bereits verwendet oder ist nicht vorhanden.
Der App-Client hat keinen Lesezugriff auf alle Attribute im angeforderten Bereich. Zum Beispiel fordert Ihre App den
email-Bereich an und Ihr App-Client kann das Attributemail, aber nichtemail_verifiedlesen. unauthorized_client-
Dem Client ist es nicht gestattet, einen Code zu gewähren oder Token zu aktualisieren.
Eine Tokenanforderung mit einem
redirect_uri, die nicht mit dem Wert aus der Autorisierungsanforderung übereinstimmt, wirdunauthorized_clientmit einemerror_descriptionvon zurückgegebeninvalid_redirect. unsupported_grant_type-
Wird zurückgegeben, wenn
grant_typeein anderer Wert ist alsauthorization_codeoderrefresh_tokenoderclient_credentials.