2017-01-03 3 views
4

Verwenden von v1.10 von amazon-cognito-identity-js im folgenden Knotenapp.So authentifizieren Sie den Cognito-Benutzerpool im Knoten js

Ich habe folgendes geschrieben: Dieser Anruf wird getätigt, nachdem die Benutzerregistrierung bestätigt wurde und die E-Mail verifiziert wurde.

var AWS = require('aws-sdk'); 
var AWSCognito = require('amazon-cognito-identity-js'); 

router.post('/emailsignin', function(req, res, next) { 
var email = req.body.email; 
var pwd = req.body.password; 

AWS.config.region = 'eu-west-1'; 
var poolData = { 
    UserPoolId : AWS_USERPOOLID, 
    ClientId : AWS_APPCLIENTID 
}; 
var userPool = new AWS.CognitoIdentityServiceProvider.CognitoUserPool(poolData); 
var authenticationData = { 
    Username : email, 
    Password : pwd, 
}; 
var authenticationDetails = new AWS.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData); 
var userData = { 
    Username : email, 
    Pool : userPool 
}; 
var cognitoUser = new AWS.CognitoIdentityServiceProvider.CognitoUser(userData); 

cognitoUser.authenticateUser(authenticationDetails, { 
    onSuccess: function (result) { 
    }, 
    onFailure: function(err) { 
} 
}); 

Wenn authenticateUser genannt wird, erhalte ich die „Reference: Navigator nicht definiert ist“

Es sieht aus wie ein Browser Anruf wird innerhalb der Knotenserver versucht.

ich ein Github Problem auf diesem geschaffen hatte und die Empfehlung war "jsbn" zu verweisen: "^ 0.1.0", "sjcl": "^ 1.0.3", „amazon-cognito-Identität -js ":"^1.10.0 ", " aws-sdk ":"^2.5.3 "

Ich habe die Änderungen an den Paketversionen vorgenommen. Leider hat es auch damit nicht funktioniert. Ich habe eine Beispiel-Nodejs-App erstellt, die versucht, sich mit E-Mail-ID und Passwort zu authentifizieren.

Hinweis: Der Cognito-Pool wird mit E-Mail als Alias ​​eingerichtet. Der Benutzer wurde erstellt, bestätigt und per E-Mail verifiziert.

Quelle Repo: https://github.com/prem911/cognito-nodejs

Alle Hinweise, wie man die "Navigator nicht gefunden" zu lösen?

+0

Cognito ist ein Service für _users_ AWS zu authentifizieren, nicht _servers_ . Dieser Code sollte auf der Client-Seite gehen. –

+0

Wenn dies der Fall ist, dann ist es schlimm, die Benutzer-Pool-ID und die Client-ID der aws-Anwendung in der Client-js-Datei offenzulegen. Ich war in der Lage, die föderierte Identität Auth vom Server zu tun. Sollte dies auch vom Kunden gemacht werden? – prem911

+0

Ich denke, du solltest überprüfen, wie Cognito funktioniert, wenn du denkst, dass diese Informationen schlecht sind. Ich glaube nicht, dass Sie verstehen, dass es primäre Wertversprechen ist. –

Antwort

Verwandte Themen