New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
Wie behebe ich „401 Nicht autorisiert“-Fehler von einem API-Gateway-REST-API-Endpunkt, nachdem ich einen Amazon-Cognito-Benutzerpool eingerichtet habe?
Ich habe meinen Amazon-Cognito-Benutzerpool als COGNITO_USER_POOLS-Autorisierer auf meiner Amazon-API-Gateway-REST-API eingerichtet. Jetzt erhalte ich in der API-Antwort die Fehlermeldung „401 Nicht autorisiert“. Wie behebe ich diese Fehler?
Behebung
Hinweis:API Gateway kann aus verschiedenen Gründen401 Nicht autorisiert-Fehler zurückgeben. Das folgende Verfahren zeigt, wie Sie 401-Fehler beheben können, die sich nur auf COGNITO_USER_POOLS-Autorisierungen beziehen.
Überprüfen Sie die Konfiguration des Autorisierers für die API-Methode
1.Wählen Sie in derAPI-Gateway-Konsoleim BereichAPIsden Namen Ihrer API aus.
2.Wählen Sie im Navigationsbereichunter Ihrer APIdie Option Autorisierer.
3.Überprüfen Sie die Konfiguration des Autorisierers und stellen Sie sicher, dass Folgendes zutrifft:
Die Benutzerpool-ID entspricht dem Aussteller des Tokens.
Die API wird bereitgestellt.
Der Autorisierer arbeitet im Testmodus.
Weitere Informationen finden Sie unterIntegrieren einer REST-API in einen Amazon-Cognito-Benutzerpool.
**Hinweis:**Wenn Sie Ihre API nicht aufrufen können, nachdem Sie die Konfiguration des Autorisierers für die API-Methode bestätigt haben, überprüfen Sie die Gültigkeit des Sicherheitstokens.
Überprüfen Sie die Gültigkeit des Sicherheitstokens
Wenn Sie die Gültigkeit des Sicherheitstokens überprüfen, stellen Sie sicher, dass Folgendes zutrifft:
- Das Sicherheitstoken ist nicht abgelaufen.
- Der Aussteller im Sicherheitstoken stimmt mit dem im API konfigurierten Amazon-Cognito-Benutzerpool überein.
- Die Zeichenfolgenwerte für dasID-Tokenund dasZugriffstokensind gültig.
**Hinweis:**Wenn die Zeichenfolgenwerte gültig sind, dann können Sie die Token decodieren. Wenn die Token nicht gültig sind, stellen Sie sicher, dass keine Leerzeichen in die Token eingefügt wurden, als sie im Anforderungsheader übergeben wurden.
Wichtig:Wenn für die API-Gateway-Methode keine zusätzlichen Bereiche konfiguriert sind, stellen Sie sicher, dass Sie ein gültigesID-Tokenverwenden. Wenn zusätzliche Bereiche für die API-Gateway-Methode konfiguriert sind, vergewissern Sie sich, dass Sie ein gültigesZugriffstokenverwenden. Weitere Informationen finden Sie unterIntegrieren einer REST-API in einem Amazon-Cognito-BenutzerpoolundVerwenden benutzerdefinierter Amazon-Cognito-Bereiche in API Gateway.
Beispiel für Sicherheitstoken-Nutzdaten
Id token payload: { "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "aud": "xxxxxxxxxxxxexample", "email_verified": true, "token_use": "id", "auth_time": 1500009400, "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_example", "cognito:username": "janedoe", "exp": 1500013000, "given_name": "Jane", "iat": 1500009400, "email": "janedoe@example.com" } Access token payload: { "auth_time": 1500009400, "exp": 1500013000, "iat": 1500009400, "iss": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_example", "scope": "aws.cognito.signin.user.admin", "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "token_use": "access", "username": "janedoe@example.com" }
Notieren Sie sich die folgenden Claim-Namen in der Beispiel-Nutzlast für Sicherheitstoken:
- token_usegibt den Typ des Tokens an (ID oder Zugriffstoken).
- expgibt die Ablaufzeit des Tokens an.
Hinweis:DerExp-Anspruch wird in Sekunden seit der Unix-Epoche (1970-01-01T0:0:0Z) bis zum Ablaufdatum und -zeitpunkt des Tokens in koordinierter Weltzeit (UTC Coordinated Universal Time) angegeben. - auth_timegibt an, wann das Token ausgestellt wurde.
- issgibt die Domäne des Benutzerpools an, der die Token ausgestellt hat.
Wichtig:
- Stellen Sie sicher, dass das von Ihnen verwendete Token mit dem Benutzerpool übereinstimmt, der für die API-Gateway-Methode konfiguriert wurde. Wenn Sie die API immer noch nicht aufrufen können, überprüfen Sie, ob Sieden Autorisierungsheader korrekt verwenden.
- Wenn Sie immer noch 401-Fehler erhalten, stellen Sie sicher, dass IhreRessourcenrichtliniendie Anfrage nicht blockieren.
Wenn Sie Postman zum Aufrufen der API verwenden
Verwenden Sie denOAuth 2.0-Autorisierungsmodus, um Amazon- Cognito-Token direkt zu verwenden. Wenn Sie den OAuth 2.0-Autorisierungsmodus einrichten, vergewissern Sie sich, dass die folgenden Punkte zutreffen:
- Der BerechtigungstypistBerechtigung-Codeoder**implizite Berechtigung**entsprechend Ihrer Konfiguration auf dem App-Client des Benutzerpools.
- DieCallback-URLentspricht derumgeleiteten URL, die auf dem App-Client des Benutzerpools konfiguriert ist.
- DieAuth-URLhat das folgende Format:
https://mydomain.auth.us-east-1.amazoncognito.com/login
Wichtig:Ersetzen Siemydomaindurch den Domänennamen, den Sie für die Konfiguration Ihres Benutzerpools verwenden. Stellen Sie sicher, dass Sie die richtige AWS-Region eingeben, in der Ihre API gehostet wird.
- Client-IDist die App-Client-ID des Benutzerpools.
Hinweis:Wenn ein Client-Geheimnis mit dem App-Client des Benutzerpools verknüpft ist, stellen Sie sicher, dass Sie das Client-Geheimnis auf der RegistrierteBerechtigungim FeldClient-Geheimnisangeben. Wenn dem App-Client des Benutzerpools kein Client-Geheimnis zugeordnet ist, lassen Sie das FeldClient-Geheimnisleer. - Der Geltungsbereichist alsopenidkonfiguriert.
Hinweis:DerOpenID-Bereich muss auch auf dem App-Client des Benutzerpools zulässig sein. - Der richtige Token-Endpunkt des Amazon-Cognito-Benutzerpools ist für denAutorisierungscodeflusseingegeben.
Beispiel für einen Token-Endpunkt des Amazon-Cognito-Benutzerpools
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/token
**Hinweis:**Postman übergibt den erforderlichen Inhaltstyp möglicherweise nicht an den Token-Endpunkt, was zu einem 405-Fehler führen kann. Bei der Verwendung des impliziten Flusses erhalten Sie jedoch keine 504-Fehlermeldung.
Weitere Informationen
Wie kann ich die Signatur eines Amazon-Cognito-JSON-Web-Tokens decodieren und überprüfen?
Kontrolle des Zugriffs auf eine REST-API mit Amazon-Cognito-Benutzerpools als Autorisierer

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren