You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native+AWS Amplify谷歌登录后触发InvalidIdentityPoolConfigurationException

解决Cognito Identity Pool配置错误导致的联合登录失败问题

错误信息

LOG Sign in failure [InvalidIdentityPoolConfigurationException: Invalid identity pool configuration. Check assigned IAM roles for this pool.]

问题原因分析

通过谷歌联合登录后,Cognito User Pool完成用户身份验证后,需要将该身份映射到Identity Pool以获取临时IAM凭证——这就是Identity Pool参与流程的核心原因。出现该错误的本质是:Identity Pool无法为已认证的用户正确分配或关联IAM角色,常见诱因包括角色配置缺失、信任策略错误、身份池与User Pool/谷歌提供商关联失效,或是Safari的第三方Cookie限制导致认证状态丢失。


解决方案

1. 检查Identity Pool与User Pool的关联配置

  • 进入AWS控制台的Cognito Identity Pool页面,确认已添加你的Cognito User Pool作为身份提供商,且填写的用户池ID和客户端ID与控制台信息完全匹配
  • 确保身份池的「启用联合身份验证」选项已开启,若通过User Pool中转谷歌登录,需确认Identity Pool已将该User Pool设为信任的身份源

2. 验证Identity Pool的IAM角色配置

  • 检查身份池对应的已认证角色和未认证角色是否存在,且角色的信任策略配置正确:
    已认证角色的信任策略需允许Cognito Identity Pool服务主体,示例配置如下:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "cognito-identity.amazonaws.com"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "cognito-identity.amazonaws.com:aud": "你的身份池ID"
            },
            "ForAnyValue:StringLike": {
              "cognito-identity.amazonaws.com:amr": "authenticated"
            }
          }
        }
      ]
    }
    
  • 若角色不存在,需重新创建并关联到Identity Pool;若策略有误,直接编辑角色的信任策略修正

3. 适配Safari的第三方Cookie限制

Safari默认阻止第三方Cookie,会导致Amplify无法保存或读取认证会话,进而影响Identity Pool的身份解析:

  • 在amplifyconfiguration.json的Auth模块OAuth配置中,修改cookieStorage参数:
    "oauth": {
      "domain": "你的Cognito Hosted UI域名",
      "scope": ["email", "openid", "profile"],
      "redirectSignIn": "你的Expo重定向URL",
      "redirectSignOut": "你的Expo重定向URL",
      "responseType": "code",
      "cookieStorage": {
        "domain": ".你的域名.com",
        "path": "/",
        "expires": 365,
        "sameSite": "none",
        "secure": true
      }
    }
    
  • 测试阶段可临时开启Safari的「允许所有Cookie」选项(设置> Safari> 隐私与安全性> 关闭「阻止所有Cookie」)

4. 确认Amplify配置的完整性

  • 检查amplifyconfiguration.json中是否正确填写了identityPoolId、userPoolId和userPoolWebClientId,确保三者与AWS控制台的配置完全匹配
  • 初始化Amplify时,确认Auth模块的配置已正确加载,无遗漏参数

5. 二次校验User Pool的谷歌提供商配置

  • 登录谷歌开发者控制台,确认OAuth 2.0客户端ID的授权重定向URI包含Cognito Hosted UI的回调URL(格式:https://你的Cognito域名/oauth2/idpresponse)和Expo的重定向URL
  • 确认Cognito User Pool中谷歌身份提供商的客户端ID和客户端密钥与谷歌控制台的信息一致,且已启用OAuth 2.0相关API

内容的提问来源于stack exchange,提问作者user42195

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:34:56