2016-07-20 8 views
0

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.

Antwort

1

Diese Ausnahme wird von Cognito Federated Identities ausgelöst, nicht von Benutzerpools. Es liegt also nicht an der Service-Instabilität. Dies bedeutet, dass der von Ihnen angegebene Anmeldeschlüssel nicht mit dem übereinstimmt, was mit dem Pool verknüpft ist und über die Konsole konfiguriert wurde.

Ich würde überprüfen, ob Sie es auf der Konsole correctly konfiguriert haben, und wenn ja, fügen Sie einige Protokollierung, um zu sehen, was gesendet wird als der Schlüssel in den Logins festgelegt, wenn es nicht funktioniert vs wenn es tut.

+0

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. –

+0

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? –