如果我已经拥有aws-sdk(javascript),我是否需要amazon-cognito-identity-js?

时间:2017-08-06 00:19:05

标签: node.js amazon-web-services aws-sdk-js

我有一个javascript项目,我使用aws-sdk。不,我想使用amazon-cognito-identity-js。在页面上它说:

  

请注意,适用于JavaScript的Amazon Cognito AWS SDK只是一个精简版本   AWS Javascript SDK命名为AWSCognito而非AWS。它   仅引用Amazon Cognito Identity服务。

事实上,我可以用例如:

创建CognitoIdentityServiceProvider
CognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();

但我该怎么做才能认证用户?根据{{​​3}}文档:

authenticationDetails = new CognitoIdentityServiceProvider.AuthenticationDetails({Userame: ..., Password: ...});
cognitoUser.authenticateUser(authenticationDetails, ...)

但CognitoIdentityServiceProvider对象没有AuthenticationDetails属性。

当我使用aws-sdk而不是amazon-cognito-identity-js时,我是否必须做一些不同的事情?

或者我的假设是错的,我需要两个,aws-sdk和amazon-cognito-identity-js?

2 个答案:

答案 0 :(得分:2)

不,你不是。你可以使用像这样的aws-sdk登录:

const cognito = new aws.CognitoIdentityServiceProvider({ region });
cognito.adminInitiateAuth({
  AuthFlow: 'ADMIN_NO_SRP_AUTH',
  ClientId: clientId,
  UserPoolId: poolId,
  AuthParameters: {
    USERNAME: email,
    PASSWORD: password,
  },
});

答案 1 :(得分:0)

对于userName密码身份验证,它需要具有ADMIN_NO_SRP_AUTH。 我还添加了处理错误和成功的功能。有关数据中发送的响应和令牌的更多详细信息,可以检查是否为引用。

const cognito = new AWS.CognitoIdentityServiceProvider();
    cognito.adminInitiateAuth({
        AuthFlow: 'ADMIN_NO_SRP_AUTH',
        ClientId: 'clientId',
        UserPoolId: 'poolId'
        AuthParameters: {
            USERNAME: 'userName',
            PASSWORD: 'password',
        },
    }, function(err, data) {
        if (err) {
            console.log(err, err.stack);
        }
        else {
            console.log(data);
        }
    });