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

如何在AWS中验证跨账号Client Credential访问令牌

跨AWS账号Cognito客户端凭证流Access Token信任校验问题

场景说明

参考AWS官方发布的Amazon Cognito User Pool OAuth 2.0客户端凭证授权(Client Credentials grant)相关说明,当前遇到跨账号Token校验场景:

  • 自有API部署在AWS账号A1中,需要对来自AWS账号A2的客户端API请求做身份认证
  • 客户端侧在自有账号A2内配置了支持Client Credentials流的App Client,请求流程为:
    • 客户端使用自身账号下的client secret、对应token issuer申请access token
    • 客户端携带该access token向A1账号下的API发起请求
    • A1侧API校验Token合法性后返回响应

核心疑问

A1账号API默认关联的token issuer,与A2账号客户端服务使用的token issuer完全不同,如何建立对A2账号签发Token的信任?

已构思的自研方案:要求客户端方向服务端注册其user pool ID、app ID、issuer URL,服务端将这些信息存储在数据库中,校验Token时匹配对应信息完成验证。希望确认AWS是否提供原生功能支持该场景,无需自行开发额外校验逻辑。


回答

AWS没有提供跨账号Cognito User Pool直接互信的一键配置能力,但你可以根据API的部署形态,使用AWS原生托管服务实现全托管的Token校验,完全不需要自行编写校验逻辑、维护Token配置库:

  • 如果你的API部署在API Gateway(HTTP API/REST API)上:
    不要选择绑定单用户池的「Cognito授权器」类型,该类型仅支持绑定同账号下的Cognito用户池。直接创建JWT类型自定义授权器,该类型授权器支持同时配置多个可信issuer地址,你只需要将A2账号Cognito User Pool的issuer(格式为https://cognito-idp.<区域>.amazonaws.com/<A2账号用户池ID>)添加到授权器的可信发行方列表,同时配置audience校验规则为A2侧对应App Client的ID即可。API Gateway会自动完成JWT签名拉取与校验、过期时间校验、issuer与audience匹配校验,非法请求会直接被拦截,不会转发到后端。
  • 如果你的API部署在应用负载均衡器(ALB)后端:
    ALB原生支持JWT认证能力,同样支持配置多个可信OIDC issuer,将A2账号Cognito的issuer地址、对应App Client的audience加入配置即可,ALB会自动完成全流程Token校验,校验不通过的请求会直接返回401状态码,不会透传到后端服务。
  • 如果后续需要对接多个其他AWS账号的Cognito签发的Token,只需要在上述托管服务的授权器配置中追加对应的可信issuer和audience规则即可,不需要自行维护配置数据库。

安全提示:校验过程中不要关闭audience校验,否则同issuer下其他App Client签发的Token也能访问你的API,会产生越权风险。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:18:22