Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用AWS Cognito SDK使用NodeJS从REST服务对用户进行身份验证?_Javascript_Node.js_Amazon Web Services_Asynchronous_Amazon Cognito - Fatal编程技术网

Javascript 如何使用AWS Cognito SDK使用NodeJS从REST服务对用户进行身份验证?

Javascript 如何使用AWS Cognito SDK使用NodeJS从REST服务对用户进行身份验证?,javascript,node.js,amazon-web-services,asynchronous,amazon-cognito,Javascript,Node.js,Amazon Web Services,Asynchronous,Amazon Cognito,全部 我目前面临的一个问题是,如何使用使用ClaudiaJS+Claudia API Builder构建并通过“/API/auth”在API网关上公开的lambda函数对来自Cognito用户池的用户进行身份验证。我似乎找不到成功调用cognitoUser.authenticateUser的方法 到目前为止,我找到的所有资源都是用于通过浏览器调用此API的,但我找不到任何在后端执行此操作的示例 我已经尝试将响应作为常规回调、承诺和对象侦听器来处理,但它们似乎都不起作用,我总是从REST服务得到一

全部

我目前面临的一个问题是,如何使用使用ClaudiaJS+Claudia API Builder构建并通过“/API/auth”在API网关上公开的lambda函数对来自Cognito用户池的用户进行身份验证。我似乎找不到成功调用
cognitoUser.authenticateUser
的方法

到目前为止,我找到的所有资源都是用于通过浏览器调用此API的,但我找不到任何在后端执行此操作的示例

我已经尝试将响应作为常规回调、承诺和对象侦听器来处理,但它们似乎都不起作用,我总是从REST服务得到一条{“message”:“internalserver error”}消息作为响应

同样重要的是,我对节点和异步编程还相当陌生,但是如果这个SDK设计为从后端而不是前端调用,请您检查一下这段代码并告诉我正确的方法,好吗

我的App.js

var ApiBuilder = require('claudia-api-builder');
var api = new ApiBuilder();

//Routes
var usuario = require('./routes/usuario');
var auth = require('./routes/auth');

//Caminho default da API
var API_ROOT = "simc/api";
//User Routes
api.get(API_ROOT + "/f1", usuario.f1);
api.get(API_ROOT + "/f2", usuario.f2);

//Auth Routes
api.get(API_ROOT + "/login", auth.login);
module.exports = api;
我的授权路线

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

var authAPI = {};


authAPI.login = function() {
     var authenticationData = {
          Username: 'xxxxxx',
          Password: 'xxxxxx',
     };
     var authenticationDetails = new AWSCognito.AuthenticationDetails(authenticationData);
     var poolData = {
          UserPoolId: 'us-east-1_xxxxxx',
          ClientId: 'xxxxxx'
     };


     var userPool = new AWSCognito.CognitoUserPool(poolData);
     var userData = {
          Username: 'xxxxxx',
          Pool: userPool
     };

     //Trying to use Promises
     var cognitoUser = new AWSCognito.CognitoUser(userData);
     return cognitoUser.authenticateUser(authenticationDetails)
          .then(function(result) {
               console.log('access token + ' + result.getAccessToken().getJwtToken());
               //Use the idToken for Logins Map when Federating User Pools with Cognito Identity or when passing through an Authorization Header to an API Gateway Authorizer
               console.log('idToken + ' + result.idToken.jwtToken);
               return result;
          })
          .catch(function(err) {
               console.log(err);
               return err;
          });

     //Trying to use Object Listeners
     var request = cognitoUser.authenticateUser(authenticationDetails).promise();
     return request.on('success', function(response) {
          console.log('access token + ' + response.getAccessToken().getJwtToken());
          //Use the idToken for Logins Map when Federating User Pools with Cognito Identity or when passing through an Authorization Header to an API Gateway Authorizer
          console.log('idToken + ' + response.idToken.jwtToken);
          return response;
     }).
     on('failure', function(err) {
          console.log("Error!");
          return err;
     }).send();

};


module.exports = authAPI;
我修改了原始处理程序,因为它似乎也不能正常工作

cognitoUser.authenticateUser(authenticationDetails, {
        onSuccess: function (result) {
            console.log('access token + ' + result.getAccessToken().getJwtToken());
            /*Use the idToken for Logins Map when Federating User Pools with Cognito Identity or when passing through an Authorization Header to an API Gateway Authorizer*/
            console.log('idToken + ' + result.idToken.jwtToken);
            return 'idToken + ' + result.idToken.jwtToken;
        },

        onFailure: function(err) {
            return err;//alert(err);
        },

    });
有人知道我做错了什么吗

提前感谢,, 恩里科·贝加莫

var authenticationDetails = new AWS.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);
使用此函数包含函数

使用此函数包含函数