Ich benutze die AWS SDK für Javascript und ich versuche den neuen Cognito User Pool Service zu verwenden. Ich erhalte eine Fehlermeldung aus der zugrunde liegenden HTTP-Anforderung, die Funktion Cognito API Zugriff auf AWSCognitoIdentityService.GetId:Aufruf an AWSCognitoIdentityService.GetId für Cognito-Benutzerpools gibt zurück "Token stammt nicht von einem unterstützten Anbieter dieses Identitätspools."
POST/HTTP/1.1
Host: cognito-identity.us-east-1.amazonaws.com
Connection: keep-alive
Content-Length: 985
Cache-Control: max-age=0
Origin: http://localhost:3000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Content-Type: application/x-amz-json-1.1
X-Amz-Content-Sha256: 9fba852db0a50678957c5be2a317ebce5edbb4580ad7cb1d7b524e2ff5bf95f7
X-Amz-Target: AWSCognitoIdentityService.GetId
X-Amz-User-Agent: aws-sdk-js/2.3.17
Accept: */*
Referer: http://localhost:3000/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8
Anfrage Nutzlast:
{"IdentityPoolId":"us-east-1:f9a5b209-8ed6-405d-987c-eb2954d30d1c","Logins":{"cognito-idp.us-east-1.amazonaws.com/us-east-1_9ymEVPkkL":"eyJraWQiOiJQUFhBemRsVDg1K29kNzNvTFU4cnFzVUZORVJvVkh2aVJERGV4bzdISmJzPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiI0OTNlYjk5MS1iMTgyLTQxYzAtYmZhNC00N2M5YzViMzM1OTMiLCJhdWQiOiI3N3U3MnRidjN2M2M2MG1pZXFlNGhhbW8yOSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTQ2ODk4OTY4MywiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfOXltRVZQa2tMIiwibmFtZSI6Ik5uZW5uYSBVZGVnYnVuYW0iLCJleHAiOjE0Njg5OTMyODMsImlhdCI6MTQ2ODk4OTY4MywiZW1haWwiOiJubmVubmFAZGFzaHBlZWsuY29tIn0.gItOyeKF3pu24aWtaUwPMQtcOAJu9TWqmYeT3N74zijI9QgfxL93fagZvVgsQj-rqtRSddVV05ZHJBXXZiUZdb3PnUDp48R_1Kiv1RhIvMqOO43RNyS9B7G4uD0cdM8S7OCaoJMXbDPwVH5jy_j9_anm7HgbRGi3JYLS10bIvvuqznxp75V6bxsTGhVGT8EHTui-l0yqLhLbPDM05JV0sOXANFS-BO4sYjgJ-VU8GrP6D49wbses524bMIDAIRN78me5WAFC6OzOqZQ9e_JNVbgs8pHaaDqpqTZq6RUGGUS0QykhDPoJImbS_tt5rGNrVFrDpKXcwJAD1hI5x6lrNA"}}
Antwort:
HTTP/1.1 400 Bad Request
x-amzn-RequestId: 8e6f7124-4e35-11e6-a6a6-d56ee4384e6b
Access-Control-Allow-Origin: *
x-amzn-ErrorType: NotAuthorizedException:
Access-Control-Expose-Headers: x-amzn-RequestId,x-amzn-ErrorType,x-amzn-ErrorMessage,Date
**x-amzn-ErrorMessage: Token is not from a supported provider of this identity pool.**
Content-Type: application/x-amz-json-1.1
Content-Length: 109
Date: Wed, 20 Jul 2016 04:51:01 GMT
Connection: close
Dieser " Token ist nicht von einem unterstützten Anbieter dieses Identitätspools "macht n o Sinn. Dieses Token stammt aus der Benutzersitzung, die während der Authentifizierung zwischengespeichert wurde. Die angegebene loginID basiert auf dem Format für den Cognito-Benutzerpool.
Hier ist ein Teil der Probe Javascript-Code:
this.loginId = 'cognito-idp.' + this.region + '.amazonaws.com/' + this.userPoolId;
this.poolData = {
UserPoolId : this.userPoolId,
ClientId : this.clientId
};
this.userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(this.poolData);
cognitoUser.getSession(function(err, session) {
if (err) {
console.log(err);
console.log("user session expired. needs to log in");
this.navigateToLogin();
return;
}
var token = session.getIdToken().getJwtToken();
AWS.config.credentials.params.Logins[this.loginId] = token;
AWS.config.credentials.refresh(function(err){
if (err) {
alert(err);
}else{
onLoggedIn();
}
});
console.log('session validity: ' + session.isValid());
}.bind(this));
Was mir rätselhaft ist, dass es funktioniert verwendet! Und manchmal, nach vielen Tagen des Ein- und Ausloggens, kann ich es wieder zum Laufen bringen. Aber jetzt hat alles zusammen aufgehört zu arbeiten. Ich frage mich, ob das ein Fehler ist, da dieser Dienst noch in der Betaversion ist, oder wenn ich etwas falsch mache.
Ich weiß, dass die Ausnahme von Federated Identities ausgelöst wird, aber es scheint, dass selbst in der API-Dokumentation noch keine Logins aus Cognito-Benutzerpools enthalten sind: https://docs.aws.amazon.com/cognitoidentity/latest/ APIReference/API_GetId.html Auch der Logins-Schlüssel stimmt mit dem überein, was mit dem Pool verbunden ist. Der Logins-Schlüssel in der Nutzlast ist "cognito-idp.us-east-1.amazonaws.com/us-east-1_9ymEVPkkL". Das steht in Verbindung mit der Dokumentation, die Sie gerade verknüpft haben. –
Die Dokumentation ist einfach ein bisschen zurück. Ist das der Fall, wenn es funktioniert und wenn nicht? Oder kann es überhaupt nicht mehr arbeiten? –