【问题标题】:AWS Cognito Developer Authenticated Identities using JavaScript SDK使用 JavaScript 开发工具包的 AWS Cognito 开发人员身份验证
【发布时间】:2019-01-01 03:26:51
【问题描述】:

我需要使用 JavaScript SDK 实现 Developer Authenticated Identities,但遇到了问题。我已经使用自定义身份验证提供程序配置了一个身份池

在服务器上:

AWS.config = new AWS.Config({
    region: 'ap-northeast-2',   
    credentials: new AWS.Credentials('XXXXXS7FJBAOO5IXXXXX', 'XXXXXYBo4jmfsu7K0qJSFvu3nlVvYOcVz4GXXXXX')
});

var params = {
    IdentityPoolId: 'ap-northeast-2:a383cb2e-e302-4ff6-8d8f-70e3185XXXXX',
    Logins: {
        'com.abc.xyz': '9876543210' // different value for each user
    }
};

var cognitoidentity = new AWS.CognitoIdentity();
cognitoidentity.getOpenIdTokenForDeveloperIdentity(params, function(err, data) {
    if (err) {
        console.log(err, err.stack); // an error occurred
    }
    else {
        console.log(data);           // successful response
    }
});

服务器结果:

IdentityId: "ap-northeast-2:5cf7f3cd-b370-416b-bed8-f7f8c7aXXXXX"
Token: "eyJra.....sL8bg"

在浏览器上:

AWS.config = new AWS.Config({
    region: 'ap-northeast-2'
});

var params = {
    IdentityId: 'ap-northeast-2:5cf7f3cd-b370-416b-bed8-f7f8c7aXXXXX',      //Received from server
    CustomRoleArn: 'arn:aws:iam::356127965XXX:role/XXXXX_Customer',
    Logins: {
        'com.abc.xyz': '9876543210'
    }
};

var cognitoidentity = new AWS.CognitoIdentity();
cognitoidentity.getCredentialsForIdentity(params, function(err, data) {
    if (err) {
        console.log(err, err.stack); // an error occurred
    }
    else {
        console.log(data);           // successful response
    }
});

浏览器结果:

Please provide a valid public provider

身份池配置

【问题讨论】:

    标签: javascript amazon-web-services amazon-cognito


    【解决方案1】:

    基于this post,我在浏览器部分做了如下改动

    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
        IdentityId: 'ap-northeast-2:5cf7f3cd-b370-416b-bed8-f7f8c7aXXXXX',      //Received from server
    IdentityPoolId: 'ap-northeast-2:a383cb2e-e302-4ff6-8d8f-70e3185XXXXX',
        Logins: {
            'cognito-identity.amazonaws.com': '9876543210'
        }
    });
    
    AWS.config.credentials.get(function(err, data) {
        if (err) {
            console.log(err); // an error occurred
        }
        else {
            console.log(data);           // successful response
        }
    });
    
    AWS.config.credentials
    

    现在我可以收到包含 accessKeyId、expireTime、secretAccessKey 和 sessionToken 的响应了

    【讨论】:

      【解决方案2】:

      我知道这是一篇旧帖子,但如果有人遇到这个问题,我相信如果你改变了,你的第一种方法会奏效:

      Logins: {
          'com.abc.xyz': '9876543210'
      }
      

      Logins: {
          'cognito-identity.amazonaws.com': "eyJra.....sL8bg"
      }
      

      我觉得任何不使用您在步骤 1) 中生成的令牌的解决方案都是不完整的。

      【讨论】:

        猜你喜欢
        • 2016-11-21
        • 1970-01-01
        • 1970-01-01
        • 2019-02-20
        • 2015-04-15
        • 2015-11-05
        • 2014-12-05
        • 2016-12-04
        • 1970-01-01
        相关资源
        最近更新 更多