Aws Cognito联合身份回答,在getOpenIdTokenForDeveloperIdentity()

时间:2017-09-14 08:03:36

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

我在aws lambda(环境nodejs6.10)中遇到问题,尝试将用户注册为自定义提供程序。 我在我的后端调用getOpenIdTokenForDeveloperIdentity,用这个参数:

const params = {
  IdentityPoolId: config.IDENTITY_POOL_ID,
  Logins: {
    [config.DEVELOPER_PROVIDER_NAME]: id
  }
}

负责电话会议的代码很简单:

const cognitoidentity = new AWS.CognitoIdentity({apiVersion: '2014-06-30'})
return cognitoidentity.getOpenIdTokenForDeveloperIdentity(params).promise()
.then(...)

不幸的是Cognito的答案是这个错误:

{
  "message": "Not Found",
  "code": "UnknownError",
  "statusCode": 404,
  "time": "2017-09-13T16:50:12.832Z",
  "requestId": "4RQE2T66K7LOT3RBGOMN0JO82NVV4KQNSO5AEMVJF66Q9ASUAAJG",
  "retryable": false,
  "retryDelay": 58.96973108302359
}

我在2年前使用几乎相同的代码完成了这项工作并且仍在使用,但在这个项目中并非如此。我为未经验证的用户创建了一个小型Web客户端,它与Cognito配合得很好,所以我认为cognito设置正确。该区域与cognito和lambda相同,us-east-1。角色和策略似乎是正确的,lambda有权使用Cognito Identity完成所有工作。我现在不知道该怎么办,如果不能解决,只想离开认知。请帮忙。

其他相关信息部分: 我正在使用无服务器框架,但是手动创建了cognito身份池(角色也一样)。

Lambda允许权限:

[
  "cognito-identity:DeleteIdentities",
  "cognito-identity:DescribeIdentity",
  "cognito-identity:GetOpenIdTokenForDeveloperIdentity",
  "cognito-identity:ListIdentities",
  "cognito-identity:LookupDeveloperIdentity",
  "cognito-identity:MergeDeveloperIdentities",
  "cognito-identity:UnlinkDeveloperIdentity"
]

代码初始化

const AWS = require('aws-sdk')

AWS.config.update({
  region: config.REGION
})
AWS.config.setPromisesDependency(require('bluebird'))

1 个答案:

答案 0 :(得分:1)

解决:问题是由于AWS配置中的错误端点,由我的dynamodb数据层加载