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

如何通过Cognito API获取授权码?OIDC身份集成场景咨询

问题解答

首先明确:Cognito没有提供直接满足你需求的API方法。

原因是OIDC的授权码(Authorization Code)流程本身就是为浏览器端的重定向交互设计的,Cognito的API体系里并没有开放服务器端直接生成授权码的接口。你提到的AdminInitiateAuth属于OIDC的「资源所有者密码凭证流程」,设计目的就是让服务器端直接获取令牌集,而非授权码,且无法修改其返回格式。

如果必须要拿到授权码返回给浏览器,有以下几种替代方案:

  • 服务器端代理授权码流程
    服务器作为中间层代理完成Cognito Authorize端点的交互逻辑:

    1. 服务器端用已验证的用户凭证,构造Authorize端点请求(带上response_type=code、client_id、redirect_uri、state、nonce等必要参数)。
    2. 处理Cognito的重定向响应,提取授权码。
    3. 将授权码返回给用户浏览器,后续由前端自行调用Token端点交换令牌。
      注意:必须严格处理state和nonce参数,防范CSRF等安全风险。
  • 调整流程直接使用令牌
    如果业务场景允许,直接将AdminInitiateAuth返回的id_token、access_token返回给浏览器。前端可以直接用这些令牌发起后续请求,无需经过授权码交换步骤。这种方式更高效,适合服务器端已经完成用户凭证验证的场景,但要确保令牌传输使用HTTPS,前端做好令牌的安全存储和过期刷新。

  • 自定义授权码逻辑(不推荐)
    服务器自行生成符合格式的授权码,将授权码与用户身份信息、过期时间等关联存储。当浏览器用该授权码请求令牌时,服务器验证授权码有效性后,调用Cognito的相关接口(如AdminInitiateAuth)生成令牌返回。
    注意:这种方式需要自己实现授权码的签名、过期、防重放等安全机制,复杂度高且不符合OIDC规范,仅建议在特殊应急场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:42:37