如何在 AWS Cognito 上使用未经身份验证的用户在 React 上启用 AWS 位置服务地图?

我目前正在开发一个 React 应用程序,以使用 AWS 位置服务集成地图。我在网上关注了this tutorial。本教程使用 AWS Cognito 进行用户身份验证,但我的应用程序已经拥有我们自己的内部身份验证方法。因此,我希望在没有身份验证的情况下实现地图(来自 Cognito)。

我遵循了链接 here 的同一 youtube 教程的代码,但我一直面临身份验证问题。该代码使用 createRequestTransformer() 包中的 amazon-location-helpers 函数,需要凭据,但由于我想允许未经身份验证的访问,所以我改用身份池 ID。

这是我在 React 应用程序中遇到的错误,我收到了从 400、403 到 404 的各种身份验证错误。

Unhandled Rejection (InvalidIdentityPoolConfigurationException): Invalid identity pool configuration. Check assigned IAM roles for this pool.

如何在 AWS Cognito 上使用未经身份验证的用户在 React 上启用 AWS 位置服务地图?

我已经尝试了 stackoverflow 帖子 here 中的所有解决方案,但都无济于事。虽然我无法访问,但我的 AWS Cognito 控制台会在我刷新页面时添加用户数,如下图所示。

如何在 AWS Cognito 上使用未经身份验证的用户在 React 上启用 AWS 位置服务地图?

dfasdfewrt 回答:如何在 AWS Cognito 上使用未经身份验证的用户在 React 上启用 AWS 位置服务地图?

此错误与 Cognito User Assumed IAM 角色没有正确访问您尝试在代码中调用的资源有关。

即使用户未经身份验证 - 仍会承担未经身份验证的角色。转到 Cognito 身份池控制台并记下指定的 IAM 角色。转到 IAM 控制台中的该角色并应用必要的 IAM 策略,以便未经身份验证的 Cognito 用户可以担任该角色。

这是亚马逊位置的 IAM 相关文档:https://docs.aws.amazon.com/location/latest/developerguide/security_iam_id-based-policy-examples.html

所以一旦完成

  useEffect(() => {
    const fetchCredentials = async () => {
      setCredentials(await Auth.currentUserCredentials());
    };

    fetchCredentials();
  },[]);

具体来说,await Auth.currentUserCredentials() 将根据您在未经身份验证的 Cognito 身份池 IAM 角色上应用的 IAM 策略中的规范获取用户的临时凭证,这些凭证将拥有对 Amazon 位置的正确访问权限。

本文链接:https://www.f2er.com/17801.html

大家都在问