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

在AWS Cognito客户端凭证流中能否通过预令牌生成触发器添加访问令牌声明?

AWS Cognito客户端凭证流添加访问令牌声明的问题解答

核心结论

客户端凭证流(Client Credential Flow)下,预令牌生成触发器(Pre Token Generation Trigger)不会被触发,这就是你之前的代码无效的原因。该触发器仅针对涉及用户实体的认证流程(比如授权码流、密码流)设计,而客户端凭证流是应用客户端直接认证,不关联具体用户,因此Cognito不会调用这个触发器。

可行解决方案

如果需要在客户端凭证流的访问令牌中添加声明,可以通过以下两种方式实现:

1. 使用自定义授权器(Custom Authorizer)

自行编写Lambda函数,完成以下逻辑:

  • 验证客户端的client_id和client_secret有效性
  • 生成包含自定义声明的JWT访问令牌
  • 返回该令牌给调用方

这种方式完全自定义,能灵活添加任意需要的声明,但需要自行处理客户端认证、JWT签名等细节。

2. 利用资源服务器(Resource Servers)与客户端范围

如果需要添加的是权限类声明,可以通过Cognito控制台配置:

  • 创建资源服务器,定义自定义范围(如myapi:read、myapi:write)
  • 在客户端配置中启用这些自定义范围
  • 在客户端凭证请求时指定scope参数,Cognito会将这些范围作为scope声明包含在访问令牌中

这种方式无需编写代码,但仅支持预定义的范围声明,无法动态生成自定义内容。

关于授权码流的差异

授权码流涉及用户认证流程,Cognito会触发预令牌生成触发器,因此你修改用户组的代码能生效,组信息会被同步到ID令牌和访问令牌中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:25:11