我试图在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包。
所以如果我有密码:
const AWS = require('aws-sdk');
var authenticationDetails = new AWS.AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData);我知道错误:
无法读取未定义的属性“CognitoIdentityServiceProvider”
到AuthenticationDetails的正确路径是什么?
发布于 2018-01-22 03:10:22
成功了。
package.json需要依赖关系:
"amazon-cognito-identity-js": "^1.31.0",
"aws-sdk": "^2.182.0",AWS不使用Javascript ES6,因此不能使用'import‘关键字。
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);
}
});发布于 2019-11-09 12:32:57
对于Lambdas,可以这样使用aws-sdk模块:
const { CognitoIdentityServiceProvider } = require('aws-sdk')
//or
const CognitoIdentityServiceProvider = require('aws-sdk/clients/cognitoidentityserviceprovider') // Much smaller size对于身份验证,请使用AdminInitiateAuth方法。
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密钥加载管理方法相比,您只是假装自己是一个功能有限的未经身份验证的用户,从而为您提供了更多的功能。
发布于 2018-01-18 03:26:52
我相信你指的是亚马逊-认知-身份-js npm包在这里:https://www.npmjs.com/package/amazon-cognito-identity-js。
NPM包包括这两个文件。
这个包包含了同源SDK调用(aws-认知-sdk)。它还依赖于核心的AWS。
https://stackoverflow.com/questions/48313291
复制相似问题