首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS认知在具有npm的Lambda函数中的应用

AWS认知在具有npm的Lambda函数中的应用
EN

Stack Overflow用户
提问于 2018-01-18 03:17:14
回答 3查看 7.7K关注 0票数 5

我试图在Lambda函数中使用AWS认知功能来授权用户。

我有一些Udemy课程的示例代码(不再可用):https://www.udemy.com/minimum-viable-aws-cognito-user-auth-in-javascript

代码使用脚本文件:

aws-cognito sdk.min.js amazon-定位-min.js

第二种方式似乎是由npm提供的:亚马逊-认知-身份-js。

第一个文件应该是aws的精简版本,只包含认知api组件。完整的aws可以从npm :aws中获得,但我无法在npm中找到缩减版本。

在npm中是否可以使用裁剪文件:aws-cognito sdk.min.js?

编辑:根据拉塞尔的说法,我应该使用aws包。

所以如果我有密码:

代码语言:javascript
复制
const AWS = require('aws-sdk');

var authenticationDetails = new AWS.AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);

我知道错误:

无法读取未定义的属性“CognitoIdentityServiceProvider”

到AuthenticationDetails的正确路径是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-22 03:10:22

成功了。

package.json需要依赖关系:

代码语言:javascript
复制
"amazon-cognito-identity-js": "^1.31.0",
"aws-sdk": "^2.182.0",

AWS不使用Javascript ES6,因此不能使用'import‘关键字。

代码语言:javascript
复制
        const AWS = require('aws-sdk');

        var AmazonCognitoIdentity = require('amazon-cognito-identity-js');
        var CognitoUserPool = AmazonCognitoIdentity.CognitoUserPool;
        var AuthenticationDetails = AmazonCognitoIdentity.AuthenticationDetails;
        var CognitoUser = AmazonCognitoIdentity.CognitoUser;

        var poolData = {
            UserPoolId: 'THE USER POOL ID',
            ClientId: 'THE CLIENT ID'
        };
        var userPool = new CognitoUserPool(poolData);

        AWS.config.region = 'AWS_REGION';
        AWS.config.credentials = new AWS.CognitoIdentityCredentials({
            IdentityPoolId: 'THE USERPOOL ID',
        });
        var email = "someone@somewhere.com";
        var password = "password";

        var authenticationData = {
            Username: email,
            Password: password
        };
        var authenticationDetails = new AuthenticationDetails(authenticationData);

        var userData = {
            Username: email,
            Pool: userPool
        };

        var cognitoUser = new CognitoUser(userData);

        console.log(result);
        cognitoUser.authenticateUser(authenticationDetails, {
            onSuccess: function (result) {
              console.log('access token + ' + result.getAccessToken().getJwtToken());
              callback(null, result);
            },

            onFailure: function (err) {
              console.log('Login error: ' + err);
              callback(null, result);
            }
        });
票数 3
EN

Stack Overflow用户

发布于 2019-11-09 12:32:57

对于Lambdas,可以这样使用aws-sdk模块:

代码语言:javascript
复制
const { CognitoIdentityServiceProvider } = require('aws-sdk')
//or 
const CognitoIdentityServiceProvider = require('aws-sdk/clients/cognitoidentityserviceprovider') // Much smaller size

对于身份验证,请使用AdminInitiateAuth方法。

代码语言:javascript
复制
  const cognitoProvider =  new CognitoIdentityServiceProvider({
      apiVersion: '2016-04-18',
      accessKeyId:...
      secretAccessKey: ...
      region:...
    })

    await cognitoProvider.adminInitiateAuth(...)

amazon-cognito-identity-js包是针对前端客户端的(React、Reactive原住民等)。它只包含连接到科尼图所需的功能。它不需要aws-sdk模块(除非您需要额外的功能)。

虽然您可能可以在用例中使用amazon-cognito-identity-js,但这并不理想,因为与使用api密钥加载管理方法相比,您只是假装自己是一个功能有限的未经身份验证的用户,从而为您提供了更多的功能。

票数 5
EN

Stack Overflow用户

发布于 2018-01-18 03:26:52

我相信你指的是亚马逊-认知-身份-js npm包在这里:https://www.npmjs.com/package/amazon-cognito-identity-js

NPM包包括这两个文件。

这个包包含了同源SDK调用(aws-认知-sdk)。它还依赖于核心的AWS。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48313291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档