首页 > 解决方案 > 如何发出经过身份验证的 Cognito 请求

问题描述

我可以describeIdentityPool在启用“启用对未经身份验证的身份的访问”的情况下成功运行 Cognito 身份池的命令:

 var AWS = require("aws-sdk"); 
 let cognitoidentity = new AWS.CognitoIdentity();

  var params = {IdentityPoolId: "myIdentityPoolID"}; 

  cognitoidentity.describeIdentityPool(params, function(err, data) {
    if (err) {
      console.log(err, err.stack); 
    }
    else {
      console.log( "...getCredentials.describeIdentityPool.data:", data); 
    }
  });

但是,如果我禁用“启用对未经身份验证的身份的访问”复选框,我会收到错误消息:

NotAuthorizedException: Unauthenticated access is not supported for this identity pool.

有没有办法授权我向 Cognito 身份池发出的请求以避免此错误?

在此处输入图像描述

标签: javascriptamazon-web-servicesamazon-cognito

解决方案


这是完全可以预料的。AWS 上的几乎所有 API 都需要访问密钥 ID 和秘密访问密钥。describeIdentityPoolAPI 就是其中之一。

如果您为未经身份验证的用户启用访问权限,他们会收到允许他们执行该操作的临时凭据。默认允许的操作之一是cognito-identity:*. 这是允许未经身份验证的用户调用此 API 的方法。您将能够在分配给“未经身份验证的身份”设置的角色中找到它。

当您禁用未经身份验证的实体时,它们将不再接收临时凭证,因此无法调用该 API。

长话短说:按预期工作。


推荐阅读