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 Umleitungs- und Autorisierungsendpunkt
Der /oauth2/authorize
-Endpunkt ist ein Umleitungsendpunkt, der zwei Umleitungsziele unterstützt. Wenn Sie einen identity_provider
idp_identifier
Oder-Parameter in den aufnehmenURL, leitet er Ihren Benutzer im Hintergrund zur Anmeldeseite für diesen Identitätsanbieter (IdP) weiter. Andernfalls leitet es zu den Login-Endpunkt mit denselben URL Parametern weiter, die Sie in Ihrer Anfrage angegeben haben.
Der Autorisierungs-Endpunkt leitet Benutzer entweder zur gehosteten Benutzeroberfläche oder zu einer IdP-Anmeldeseite weiter. Das Ziel einer Benutzersitzung an diesem Endpunkt ist eine Webseite, mit der Ihr Benutzer direkt in seinem Browser interagieren muss.
Wenn Sie den Autorisierungsendpunkt verwenden möchten, rufen Sie den Browser Ihres Benutzers unter /oauth2/authorize
mit Parametern auf, die Ihrem Benutzerpool Informationen zu den folgenden Benutzerpool-Details liefern.
-
Der App-Client, bei dem Sie sich anmelden möchten.
-
Der RückrufURL, bei dem Sie landen möchten.
-
Die OAuth 2.0-Bereiche, die Sie im Zugriffstoken Ihres Benutzers anfordern möchten.
-
Optionaler Drittanbieter-IDP, den Sie für die Anmeldung verwenden möchten.
Sie können auch state
- und nonce
-Parameter angeben, die Amazon Cognito verwendet, um eingehende Ansprüche zu validieren.
GET /oauth2/authorize
Der /oauth2/authorize
Endpunkt unterstützt ausschließlich HTTPS
GET
. Ihre App initiiert diese Anfrage normalerweise im Browser Ihres Benutzers. Sie können nur Anfragen an den /oauth2/authorize
Endpunkt stellen. HTTPS
Weitere Informationen zur Definition des Autorisierungsendpunkts im OpenID Connect (OIDC) -Standard finden Sie unter Authorization Endpoint
Anforderungsparameter
response_type
-
(Erforderlich) Der Antworttyp. Es muss sich entweder um
code
odertoken
handeln.Eine erfolgreiche Anfrage mit einem
response_type
voncode
gibt eine Autorisierungscode-Erteilung zurück. Bei der Gewährung eines Autorisierungscodes handelt es sich um einencode
Parameter, den Amazon Cognito an Ihre Weiterleitung anhängt. URL Ihre App kann den Code durch Zugriffs-, ID- und Aktualisierungstoken austauschen. Verwenden Sie als bewährte Sicherheitsmethode und zum Abrufen von Aktualisierungstoken für Ihre Benutzer eine Autorisierungscode-Erteilung in Ihrer App.Eine erfolgreiche Anfrage mit dem
response_type
token
gibt eine implizite Erteilung zurück. Eine implizite Gewährung ist eine ID und ein Zugriffstoken, das Amazon Cognito an Ihre Weiterleitung anhängt. URL Eine implizite Erteilung ist weniger sicher, da sie Token und potenzielle identifizierende Informationen für Benutzer verfügbar macht. Sie können die Unterstützung für implizite Erteilungen in der Konfiguration Ihres App-Clients deaktivieren. client_id
-
(Erforderlich) Die App-Client-ID.
Der Wert
client_id
muss die ID eines App-Clients in dem Benutzerpool sein, in dem Sie die Anfrage stellen. Ihr App-Client muss die Anmeldung durch lokale Benutzer von Amazon Cognito oder mindestens eines externen IdPs unterstützen. redirect_uri
-
(Erforderlich) Der URL Ort, an den der Authentifizierungsserver den Browser umleitet, nachdem Amazon Cognito den Benutzer autorisiert hat.
Ein Redirect Uniform Resource Identifier (URI) muss die folgenden Attribute haben:
-
Es muss ein absoluter Wert seinURI.
-
Sie müssen das URI bei einem Kunden vorregistriert haben.
-
Sie darf keine Fragmentkomponente enthalten.
Siehe OAuth2.0 — Endpunkt der Umleitung
. Amazon Cognito setzt voraus, dass Ihre Weiterleitung URI verwendet wird HTTPS
http://localhost
, mit Ausnahme von, die Sie zu URL Testzwecken als Rückruf festlegen können.Amazon Cognito unterstützt auch App-Callback URLs wie.
myapp://example
-
state
-
(Optional, empfohlen) Wenn Ihre App einer Anfrage einen State-Parameter hinzufügt, gibt Amazon Cognito dessen Wert an Ihre App zurück, wenn der
/oauth2/authorize
Endpunkt Ihren Benutzer weiterleitet.Fügen Sie diesen Wert zu Ihren Anfragen hinzu, um sich vor CSRF
Angriffen zu schützen. Sie können den Wert eines
state
Parameters nicht auf eine URL -kodierte Zeichenfolge JSON setzen. Um eine Zeichenfolge, die diesem Format entspricht, in einemstate
Parameter zu übergeben, kodieren Sie die Zeichenfolge in Base64 und dekodieren Sie sie dann in Ihrer App. identity_provider
-
(Optional) Fügen Sie diesen Parameter hinzu, um die gehostete Benutzeroberfläche zu umgehen und Ihren Benutzer auf eine Anmeldeseite eines Anbieters umzuleiten. Der Wert des identity_provider-Parameters ist der Name des Identitätsanbieters (IDP), wie er in Ihrem Benutzerpool angezeigt wird.
-
Für soziale Anbieter können Sie die identity_provider-Werte
Facebook
,, undGoogle
verwenden.LoginWithAmazon
SignInWithApple
-
Verwenden Sie für Amazon Cognito Cognito-Benutzerpools den Wert
COGNITO
. -
Für SAML 2.0 und OpenID Connect (OIDC) Identitätsanbieter (IdPs), verwenden Sie den Namen, den Sie dem IdP in Ihrem Benutzerpool zugewiesen haben.
-
idp_identifier
-
(Optional) Fügen Sie diesen Parameter hinzu, um zu einem Anbieter mit einem alternativen Namen für den Namen identity_provider umzuleiten. Sie können Kennungen für Ihre SAML Version 2.0 und OIDC IdPs auf der Registerkarte „Anmeldeerfahrung“ der Amazon Cognito Cognito-Konsole eingeben.
scope
-
(Optional) Kann eine Kombination aus beliebigen systemreservierten Bereichen oder benutzerdefinierten Bereichen sein, die einem Client zugeordnet sind. Bereiche müssen durch Leerzeichen getrennt werden. Für das System reservierte Bereiche sind
openid
email
,phone
,profile
undaws.cognito.signin.user.admin
. Jeder Bereich muss dem Client zugeordnet werden, sonst wird der Client zur Laufzeit ignoriert.Falls der Client keine Bereiche anfordert, verwendet der Authentifizierungsserver alle Bereiche im Zusammenhang mit dem Client.
Ein ID-Token wird nur zurückgegeben, wenn der
openid
-Bereich angefordert wird. Das Zugriffs-Token kann nur gegen Amazon-Cognito-Benutzerpools verwendet werden, wenn der Bereichaws.cognito.signin.user.admin
angefordert wird. Die Bereichephone
,email
undprofile
können nur angefordert werden, wenn der Bereichopenid
ebenfalls angefordert wird. Diese Bereiche bestimmen die Anträge, die im ID-Token eingesetzt werden. code_challenge_method
-
(Optional) Das Hashing-Protokoll, mit dem Sie die Herausforderung generiert haben. The PKCERFC
definiert zwei Methoden, S256 und Plain. Der Amazon Cognito Cognito-Authentifizierungsserver unterstützt jedoch nur S256. code_challenge
-
(Optional) Die Aufforderung zum Nachweis des Schlüsselcode-Austauschs (PKCE), die Sie anhand der generiert haben.
code_verifier
Weitere Informationen finden Sie unter Verwendung PKCE in Autorisierungscode-Zuschüssen.Nur erforderlich, wenn Sie einen
code_challenge_method
-Parameter angeben. nonce
-
(Optional) Ein zufälliger Wert, den Sie der Anfrage hinzufügen können. Der von Ihnen bereitgestellte Nonce-Wert ist im ID-Token enthalten, das Amazon Cognito ausgibt. Zum Schutz vor Replay-Angriffen kann Ihre App den
nonce
-Anspruch im ID-Token untersuchen und mit dem vergleichen, den Sie generiert haben. Weitere Informationen zumnonce
-Anspruch finden Sie unter ID-Token-Validierungim OpenID Connect-Standard. login_hint
-
Eine Eingabeaufforderung für den Benutzernamen, die Sie an den Autorisierungsserver weiterleiten möchten. Sie können einen Benutzernamen, eine E-Mail-Adresse oder eine Telefonnummer von Ihrem Benutzer erfassen und dem Zielanbieter erlauben, den Anmeldenamen des Benutzers vorab auszufüllen. Wenn Sie einen
login_hint
Parameter und keineidp_identifier
oderidentity_provider
Parameter an denoauth2/authorize
Endpunkt senden, füllt die gehostete Benutzeroberfläche das Feld für den Benutzernamen mit Ihrem Hinweiswert aus. Sie können diesen Parameter auch an den übergeben Login-Endpunkt und den Wert für den Benutzernamen automatisch ausfüllen.Wenn Ihre Autorisierungsanfrage eine Weiterleitung zu OIDC IdPs oder Google aufruft, fügt Amazon Cognito der Anfrage an
login_hint
diesen Drittanbieter-Autorisierer einen Parameter hinzu. Sie können Anmeldehinweise nicht an AppleSAML, Login With Amazon oder Facebook (Meta) weiterleiten IdPs.
Beispielanfragen mit positiven Antworten
Die folgenden Beispiele veranschaulichen das Format von HTTP Anfragen an den /oauth2/authorize
Endpunkt.
Erteilung des Autorisierungscodes
Dies ist ein Beispiel für eine Anfrage zur Erteilung eines Autorisierungscodes.
Beispiel — GET Anfrage
Die folgende Anfrage initiiert eine Sitzung zum Abrufen eines Autorisierungscodes, den Ihr Benutzer am redirect_uri
Ziel an Ihre App weitergibt. In dieser Sitzung werden Bereiche für Benutzerattribute und für den Zugriff auf Amazon API Cognito-Self-Service-Operationen angefordert.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=openid+profile+aws.cognito.signin.user.admin
Beispiel — Antwort
Der Amazon-Cognito-Authentifikationsserver leitet Autorisierungs-Code und -Status zurück an Ihre App. Der Autorisierungscode ist fünf Minuten gültig.
HTTP/1.1 302 Found
Location: https://www.example.com
?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
Autorisierungscode wird erteilt mit PKCE
Dies ist ein Beispiel für eine Anfrage für die Gewährung eines Autorisierungscodes mit PKCE.
Beispiel — GET Anfrage
Die folgende Anfrage fügt der vorherigen Anfrage einen code_challenge
Parameter hinzu. Um den Austausch eines Codes gegen ein Token abzuschließen, müssen Sie den code_verifier
Parameter in Ihre Anfrage für den /oauth2/token
Endpunkt aufnehmen.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=code& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin& code_challenge_method=S256& code_challenge=a1b2c3d4...
Beispiel — Antwort
Der Authentifizierungsserver leitet mit dem Autorisierungscode und dem Status zurück zu Ihrer Anwendung. Der Code und der Status müssen in den Parametern der Abfragezeichenfolge und nicht im Fragment zurückgegeben werden:
HTTP/1.1 302 Found
Location: https://www.example.com
?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
Token gewähren, ohne openid
-Umfang
Dies ist eine Beispielanforderung, die eine implizite Gewährung generiert und JWTs direkt zur Sitzung des Benutzers zurückkehrt.
Beispiel — Anfrage GET
Die folgende Anfrage bezieht sich auf eine implizite Erteilung durch Ihren Autorisierungsserver. Das Zugriffstoken von Amazon Cognito autorisiert API Self-Service-Operationen.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin
Beispiel — Antwort
Der Amazon-Cognito-Autorisierungsserver leitet das Zugriffs-Token zurück an Ihre App. Da der openid
-Bereich nicht angefordert wurde, gibt Amazon Cognito kein ID-Token aus. Außerdem gibt Amazon Cognito in diesem Flow kein Aktualisierungs-Token aus. Amazon Cognito gibt das Zugriffstoken und den Status im Fragment und nicht in der Abfragezeichenfolge zurück:
HTTP/1.1 302 Found
Location: https://YOUR_APP/redirect_uri#access_token=ACCESS_TOKEN&token_type=bearer&expires_in=3600&state=STATE
Token gewähren, mit openid
-Umfang
Dies ist eine Beispielanforderung, die eine implizite Gewährung generiert und JWTs direkt zur Sitzung des Benutzers zurückkehrt.
Beispiel — Anfrage GET
Die folgende Anfrage bezieht sich auf eine implizite Erteilung durch Ihren Autorisierungsserver. Das Zugriffstoken von Amazon Cognito autorisiert den Zugriff auf Benutzerattribute und API Self-Service-Operationen.
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? response_type=token& client_id=
1example23456789
& redirect_uri=https://www.example.com
& state=abcdefg
& scope=aws.cognito.signin.user.admin+openid+profile
Beispiel — Antwort
Der Autorisierungsserver leitet mit Zugriffstoken und ID-Token zurück zu Ihrer App (da der openid
Bereich enthalten war):
HTTP/1.1 302 Found
Location: https://www.example.com
#id_token=eyJra67890EXAMPLE&access_token=eyJra12345EXAMPLE&token_type=bearer&expires_in=3600&state=abcdefg
Beispiele für negative Antworten
Amazon Cognito lehnt Ihre Anfrage möglicherweise ab. Negative Anfragen enthalten einen HTTP Fehlercode und eine Beschreibung, anhand derer Sie Ihre Anforderungsparameter korrigieren können. Im Folgenden finden Sie Beispiele für negative Antworten.
-
Wenn
client_id
und gültigredirect_uri
sind, die Anforderungsparameter jedoch nicht korrekt formatiert sind, leitet der Authentifizierungsserver den Fehler an den des Clients weiterredirect_uri
und fügt eine Fehlermeldung an einen Parameter an. URL Im Folgenden finden Sie Beispiele für eine falsche Formatierung.-
Die Anfrage enthält keinen
response_type
Parameter. -
Die Autorisierungsanfrage lieferte einen
code_challenge
Parameter, aber keinencode_challenge_method
Parameter. -
Der Wert des
code_challenge_method
Parameters ist nichtS256
.
Im Folgenden finden Sie die Antwort auf eine Beispielanfrage mit falscher Formatierung.
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request
-
-
Wenn der Client eine Anfrage
code
odertoken
eingibtresponse_type
, aber keine Genehmigung für diese Anfragen hat, kehrt der Amazon Cognito Cognito-Autorisierungsserver wie folgtunauthorized_client
zum Client-Autorisierungsserver zurück:redirect_uri
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=unauthorized_client
-
Falls die Anforderung des Clients unbekannt, falsch formatiert oder ungültig ist, sollte der Amazon-Cognito-Autorisierungsserver
invalid_scope
folgendermaßen zurredirect_uri
des Clients zurückgeben:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_scope
-
Wenn auf dem Server ein unerwarteter Fehler auftritt, kehrt der Authentifizierungsserver
server_error
zum Server desredirect_uri
Clients zurück. Da der HTTP 500-Fehler nicht an den Client gesendet wird, wird der Fehler nicht im Browser des Benutzers angezeigt. Der Autorisierungsserver gibt den folgenden Fehler zurück.HTTP 1.1 302 Found Location: https://client_redirect_uri?error=server_error
-
Wenn Amazon Cognito sich über einen Verbund mit einem Drittanbieter authentifiziert IdPs, kann es bei Amazon Cognito zu Verbindungsproblemen kommen, wie z. B. die folgenden:
-
Wenn es bei der Token-Anforderung vom IdP zu einem Verbindungs-Timeout kommt, leitet der Authentifizierungsserver den Fehler wie folgt an den
redirect_uri
des Clients weiter:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Timeout+occurred+in+calling+IdP+token+endpoint
-
Wenn beim Aufrufen des
jwks_uri
Endpunkts zur Überprüfung des ID-Tokens ein Verbindungs-Timeout auftritt, leitet der Authentifizierungsserver mit einem Fehler wie folgt an den des Clients weiter:redirect_uri
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=error_description=Timeout+in+calling+jwks+uri
-
-
Bei der Authentifizierung über einen Verbund mit einem Drittanbieter IdPs geben die Anbieter möglicherweise Fehlerantworten zurück. Dies kann auf Konfigurationsfehler oder andere Gründe zurückzuführen sein, z. B. auf die folgenden:
-
Wenn eine Fehlermeldung von anderen Anbietern empfangen wird, leitet der Authentifizierungsserver den Fehler wie folgt an den
redirect_uri
des Clients weiter:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=[IdP name]+Error+-+[status code]+error getting token
-
Wenn eine Fehlerantwort von Google empfangen wird, leitet der Authentifizierungsserver den Fehler wie folgt an den
redirect_uri
des Clients weiter:HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Google+Error+-+[status code]+[Google-provided error code]
-
-
Wenn Amazon Cognito bei der Verbindung zu einem externen IdP auf eine Kommunikationsausnahme stößt, leitet der Authentifizierungsserver mit einer der folgenden Meldungen
redirect_uri
mit einem Fehler an den des Kunden weiter:-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Connection+reset
-
HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Read+timed+out
-