2017-11-07 2 views
0

Fehler ist: com.amazonaws.services.cognitoidentity.model.NotAuthorizedException: Der nicht authentifizierte Zugriff wird für diesen Identitätspool nicht unterstützt. (Service: AmazonCognitoIdentity; Statuscode: 400; Fehlercode: NotAuthorizedException;Nicht authentifizierter Zugriff wird für diesen Identitätspool nicht unterstützt

Bitte helfen Sie mir hier aus Der Prozess der signin erfolgreich war und wenn ich Amazon eingeben lex Chat-Bot Fenster, erhalte ich die oben genannten Fehler Unauthenticated. Der Zugriff wird für diesen Identity Pool nicht unterstützt Das macht Sinn, weil ich den nicht authentifizierten Zugriff auf meinen Bot deaktiviert habe, also weiß ich, dass ohne Authentifizierung kein Benutzer mit dem Lex ChatBot interagieren darf, aber jetzt ist meine Anmeldung erfolgreich und trotzdem ich Haben Sie diesen Fehler

Meine Frage ist, müssen wir die Benutzersitzung, die sich angemeldet hat, beibehalten? Wenn ja, wie mache ich das.

Oder

Wie verbinde ich Login mit Cognito Authenticated Identity.

+0

Ja, Sie müssen keine Sitzung verwalten. Dies geschieht, indem Sie ein gültiges ID-Token in der Login-Map des Identitätspools setzen. – agent420

+0

@ agent420 können Sie Code schreiben, um mir zu sagen, wie ich diese ID und wo einstellen soll. Ich bin neu in diesem Konzept. Bitte hilf mir. – Raghav

Antwort

2

Dieser Fehler tritt auf, wenn der nicht authentifizierte Zugriff des Identitätspools deaktiviert ist und kein ID-Token in der Anmeldezuordnung für die Anwendung gefunden wurde. Zum Beispiel müssen Sie in Android-Anwendungen nach der Initialisierung von CognitoCachingCredentialsProvider auch die Methode setLogins() aufrufen und eine Login-Map bereitstellen.

//Relevant imports 
import com.amazonaws.auth.CognitoCachingCredentialsProvider; 
import com.amazonaws.regions.Regions; 

//Initialize credentials provider 
CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
    getApplicationContext(), 
    "IDENTITY_POOL_ID", 
    Regions.US_EAST_1 
); 

//Create a login map 
Map<String, String> logins = new HashMap<String, String>(); 
logins.put("www.amazon.com", "login with Amazon token"); 

//Set login map 
credentialsProvider.setLogins(logins); 
credentialsProvider.getCredentials(); 

//Create clients for AWS services with credentialsProvider as a parameter in the constructor 

Im obigen Beispiel ging ich davon aus, dass 'Login with Amazon' verwendet wurde. Für verschiedene Anbieter ändern Sie den Schlüssel "www.amazon.com" mit dem entsprechenden Token. Um den Schlüssel zu kennen, entschlüsseln Sie einfach das ID-Token unter https://jwt.io und suchen Sie nach iss-Anspruch. Der Wert ohne https: // ist der Schlüssel für die Login-Map.

Um herauszufinden, wo dieser Code platziert werden soll, überprüfen Sie, ob es ein CognitoCachingCredentialsProvider Objekt irgendwo verwendet und fügen Sie dann eine Login-Map hinzu. Um die Anmeldeinformationen forcibily zu aktualisieren, rufen Sie die Methode

+0

Vielen Dank so viel. Du hast mir viel Zeit gespart. – Raghav

+0

Sie sind willkommen :) – agent420

+0

Nun können Sie mir nur noch eine Sache sagen? Warum verwenden Sie CognitoCachingCredentialsProvider und nicht nur CognitoCredentialsProvider – Raghav

Verwandte Themen