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

如何从AWS Cognito获取通过Google/联邦登录用户的ID Token

获取Cognito第三方登录用户的ID Token解决方案

嘿,我之前在做Cognito集成第三方登录的时候也遇到过这个问题,给你梳理下具体的实现步骤和注意点,其实核心是利用Cognito的OAuth集成流程来获取它生成的标准ID Token:

一、前端登录流程中直接获取Token

如果你的前端用了AWS Amplify(大部分Cognito集成都会优先选择它),流程非常直观:

  • 发起第三方登录跳转:
    import { Auth } from 'aws-amplify';
    
    // 触发Google登录,换成'Facebook'就是脸书登录流程
    await Auth.signInWithRedirect({ provider: 'Google' });
    
  • 在你配置的回调页面(redirectSignIn地址),加载完成后获取已认证用户信息:
    // 页面初始化时调用
    const user = await Auth.currentAuthenticatedUser();
    // 提取Cognito生成的ID Token和AccessToken
    const idToken = user.signInUserSession.idToken.jwtToken;
    const accessToken = user.signInUserSession.accessToken.jwtToken;
    
    这里拿到的idToken和邮箱密码登录生成的Token结构完全一致,包含用户的Cognito属性、第三方身份标识等核心信息。

如果没用到Amplify,手动处理OAuth流程也可以:

  1. 用户通过Google/Facebook登录后,Cognito会跳转到你配置的回调URL,并携带code参数;
  2. 前端拿着这个code,向Cognito的Token端点发起POST请求:
    POST https://<你的用户池域名>/oauth2/token
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code&client_id=<你的App Client ID>&code=<回调拿到的code>&redirect_uri=<你的回调URL>
    
  3. 响应结果里会直接返回id_token、access_token等字段,直接提取即可。

二、关键配置确认

这几个配置必须确保正确,否则会导致Token获取失败:

  • 在Cognito User Pool的身份提供者页面,已经完成Google/Facebook的配置并启用;
  • 在App Client的应用设置里,开启了对应的OAuth授权流(推荐用Authorization Code Flow,安全性更高),且回调URL、退出URL都配置无误;
  • 如果用Amplify,aws-exports.js里的oauth字段要包含正确的domain、redirectSignIn、redirectSignOut、responseType(比如code)。

三、关于第三方原生Token的说明

需要明确:Cognito不会直接返回Google/Facebook的原生ID Token,而是生成属于自己的标准ID Token,这个Token的identities字段里已经包含了第三方提供者名称和用户在第三方的唯一ID,大部分业务场景下用这个就足够了。如果确实需要第三方原生Token,可以在Cognito身份池配置里开启“获取第三方身份凭证”,再通过身份池API获取。

四、后端验证Token的方式

如果后端需要验证ID Token的有效性,可以用Cognito的公钥做签名校验:

  1. 从Cognito公钥端点获取公钥:https://cognito-idp.<区域>.amazonaws.com/<用户池ID>/.well-known/jwks.json;
  2. 用JWT库(比如jsonwebtoken)结合公钥验证Token的签名、过期时间等信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:21:11