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

安卓APP调用AWS Lambda时,AWS Cognito联合身份认证失败

解决AWS Cognito联合身份认证失败(用户未通过身份验证)问题

我之前帮不少开发者排查过类似的Cognito联合身份认证问题,结合你提到的工作流和报错,下面是几个最常见的排查方向,你可以逐一验证:

1. 检查身份池的基础配置

  • 先确认Cognito控制台里的身份池已经启用了Google+、Facebook等对应登录提供商,并且填写的客户端ID/应用ID完全正确——比如Facebook需要把安卓应用的哈希值同步到Facebook开发者后台,Google要确保OAuth 2.0客户端ID的包名、签名指纹和你的安卓应用完全匹配。
  • 核实身份池的未认证/已认证角色都已正确创建,且角色具备调用Lambda的权限(比如添加lambda:InvokeFunction的权限策略)。

2. 验证GetId步骤的参数准确性

调用GetId时最容易踩坑:

  • IdentityPoolId必须完全正确,格式是region:xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,别漏写区域或打错字符。
  • 如果是已认证用户,Logins参数的格式要严格遵循Cognito要求:比如Facebook是{"graph.facebook.com": "你的Facebook访问令牌"},Google是{"accounts.google.com": "你的Google ID令牌"},这里的提供商域名不能写错。
  • 如果测试未认证用户,要确保身份池的“允许未认证身份”选项已勾选。

3. 确认流程衔接的参数一致性

  • 调用GetOpenIdToken时,必须使用GetId返回的IdentityId,且如果是已认证用户,Logins参数要和GetId时完全一致。
  • 调用AssumeRoleWithWebIdentity时,WebIdentityToken必须是GetOpenIdToken返回的OpenIdToken,RoleArn要和身份池配置的对应角色ARN一致,RoleSessionName填一个唯一值即可(比如用户ID或随机UUID)。

4. 排查第三方令牌的有效性

第三方登录令牌无效是常见诱因:

  • 单独验证Facebook/Google令牌:比如用Facebook的调试工具检查access token是否过期、权限是否符合要求;Google的ID令牌可以解码后确认aud(受众)是你的应用客户端ID、exp(过期时间)未到。
  • 如果令牌无效,Cognito会直接返回身份验证失败,这时候需要重新引导用户获取有效的第三方令牌。

5. 检查IAM角色的信任关系

确保身份池对应角色的信任策略配置正确:

  • 已认证角色的信任策略应该包含:
{
  "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"
        }
      }
    }
  ]
}
  • 未认证角色的amr值要改成unauthenticated。

6. 用CloudTrail日志定位细节

如果以上步骤都没问题,去AWS CloudTrail里搜索GetId、GetOpenIdToken、AssumeRoleWithWebIdentity的调用记录,里面会有具体的错误原因(比如参数错误、权限不足、令牌无效等),这是精准定位问题的关键。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:14:35