【问题标题】:Can I get access to user information in Cognito, without a user token?我可以在没有用户令牌的情况下访问 Cognito 中的用户信息吗?
【发布时间】:2017-12-11 00:50:46
【问题描述】:

我正在使用允许用户发送短信 (twilio/plivo) 的第三方软件,并且我想在将电话号码发布到 DynamoDB 之前验证该电话号码是否有效并且属于用户。

我有一个在nodejs 上运行的EC2 实例设置,它接收带有电话号码的传入短信,那么我将如何与cognito 交叉检查这个电话号码,因为它是通过移动短信完成的而不是通过网站?

我在我们的网站上使用 API 网关来检查用户是否确实是他们所说的人,但由于它需要一个令牌来验证用户,我认为这不可能通过短信实现?

编辑:我似乎可以看到我的所有用户(如果他们已通过验证)以及他们的电话号码。当然,我可以编写和调用一些 bash 脚本,它具有管理员 IAM 权限和 cognito 以获得相同的访问权限?或者甚至可以使用 nodeJS 来做到这一点?

【问题讨论】:

  • 哦,更糟糕的是,我们的 dynamoDB 表的 partitionKey 是用户 UID,那么我该如何正确关联这个传入的文本并获取他们的 UID?对于 APi Gateway,我们使用了 $context.authorizer.claims.sub
  • 将来可能有人会发现这个有用的文档。 docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/…

标签: node.js amazon-web-services amazon-ec2 twilio amazon-cognito


【解决方案1】:

啊,我想通了!在我的私有 EC2 实例上:

//aws cognito access
const aws = require('aws-sdk');
aws.config.update({
    accessKeyId: 'key',
    secretAccessKey: 'accessKey'
});
const CognitoIdentityServiceProvider = aws.CognitoIdentityServiceProvider;
const client = new CognitoIdentityServiceProvider({ apiVersion: '2016-04-18', region: 'REGION'});

//cognito request things

var params = {
    UserPoolId: 'UserPoolID', /* required */
    AttributesToGet: [
        'sub',
        'email_verified'
        /* more items */
    ],
    Filter: 'phone_number="+someNumber"',
    Limit: 10
};

client.listUsers(params, function(err, data) {
    if (err) {
        console.log(err, err.stack);
    } else {
        console.log(data);
        console.log(data["Users"][0]["Attributes"]);
    }
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 2015-09-12
  • 1970-01-01
  • 2020-08-21
  • 2021-06-19
  • 1970-01-01
相关资源
最近更新 更多