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

AWS Amplify iOS联邦登录报cognitoIdentityPoolNotConfigured错误

问题产生原因
  • 现有awsconfiguration.json是Amplify CLI 0.1.0版本生成的旧格式配置,新版AWSMobileClient SDK对带旧版本号标记的配置会使用过时的解析逻辑,无法正确读取CredentialsProvider节点下的Cognito身份池配置,直接抛出找不到有效身份池的错误。
  • 配置存在不合规项:在面向客户端的配置文件中写入了Cognito用户池的AppClientSecret字段,该字段仅允许存储在后端服务侧,客户端SDK识别到该字段时会判定配置无效,直接跳过配置加载流程。
  • 代码缺失SDK初始化步骤:未等AWSMobileClient完成初始化、完成配置文件解析就直接调用federatedSignIn接口,此时SDK还未加载到配置内容,也会触发该报错。
  • 配置文件打包配置错误:如果awsconfiguration.json没有被加入Xcode主target的Copy Bundle Resources构建阶段,App运行时SDK找不到配置文件,同样会返回该错误。
修复方案

按以下步骤逐一排查调整:

  • 修正配置文件格式与内容
    替换为SDK可识别的新版配置结构,移除不需要的用户池配置和敏感的ClientSecret字段,参考配置如下:
    {
      "UserAgent": "aws-amplify-cli/2.0",
      "Version": "1.0",
      "CredentialsProvider": {
        "CognitoIdentity": {
          "Default": {
            "PoolId": "替换为你实际使用的Cognito身份池ID,即原配置中us-east-1:开头的字符串",
            "Region": "us-east-1"
          }
        }
      },
      "Auth": {
        "Default": {
          "authenticationFlowType": "CUSTOM_AUTH"
        }
      }
    }
    

    如果你仅实现SAML联邦登录、不使用Cognito用户池的账号密码登录能力,不需要保留CognitoUserPool相关配置节点,避免额外的配置冲突。

  • 检查配置文件打包状态
    打开Xcode项目配置,进入主target的Build Phases标签页,展开Copy Bundle Resources列表,确认awsconfiguration.json在列表中;如果不存在就手动拖入,勾选对应target的引用。
  • 补全SDK初始化逻辑
    在调用联邦登录接口前,必须先调用AWSMobileClient的初始化方法,等初始化回调完成、无报错后再执行登录逻辑,调整后的代码参考:
    let awsClient = AWSMobileClient.default()
    
    awsClient.initialize { _, initError in
        if let initError = initError {
            print("SDK初始化失败: \(initError.localizedDescription)")
            return
        }
    
        awsClient.federatedSignIn(
            providerName: Configuration.current.awsSAMLProvider,
            token: token
        ) { userState, signInError in
            if let signInError = signInError {
                print("联邦登录失败: \(signInError.localizedDescription)")
                return
            }
    
            guard let userState = userState else { return }
            print("当前登录状态: \(userState.rawValue)")
    
            awsClient.getAWSCredentials { creds, credError in
                if let credError = credError {
                    print("获取临时凭证失败: \(credError.localizedDescription)")
                    return
                }
                guard creds != nil else { return }
                onComplete(.success)
            }
        }
    }
    
  • 校验控制台侧配置
    进入Cognito联邦身份池控制台,确认你配置的身份池ID真实存在,且已经在身份池的身份提供商配置中添加了你使用的SAML提供商,提供商名称和代码中传入的providerName完全一致,避免后续换发临时凭证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:31:04