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

如何将AWS Cognito的JWT转为不透明对称令牌并自定义授权流?

解决AWS Cognito适配谷歌智能家居的令牌问题及自定义授权流方法

一、替换JWT访问令牌为不透明令牌

谷歌智能家居套件要求使用不透明对称加密的访问令牌,而AWS Cognito默认返回JWT格式令牌,需通过中间层转换解决:

实现步骤:

  • 搭建API Gateway代理层:将谷歌的令牌请求导向自定义API Gateway端点,而非直接调用Cognito的token端点。
  • 转换令牌并存储:用户完成OAuth授权后,API Gateway接收Cognito返回的JWT access token,生成随机UUID作为不透明令牌,将该令牌与JWT、过期时间等关联信息存入DynamoDB(或Redis缓存提升性能)。
  • 返回不透明令牌:将生成的不透明令牌返回给谷歌智能家居服务。
  • 实现令牌验证端点:谷歌调用验证端点时,传入不透明令牌,从存储中取出对应的JWT,调用Cognito的GetUser或VerifyToken接口验证JWT有效性,将验证结果返回给谷歌。

注意:需确保不透明令牌的过期时间与原JWT一致,验证时先检查令牌是否过期,避免无效请求。

二、自定义AWS Cognito授权流

要自定义Cognito的授权流程,核心是利用Lambda触发器和API Gateway扩展OAuth流程:

1. 启用Cognito自定义授权触发器

  • 在Cognito用户池的「触发器」设置中,为自定义授权关联Lambda函数。
  • 编写Lambda函数处理授权逻辑:比如添加额外的用户属性校验、对接第三方身份系统验证、自定义令牌生成规则等。该函数可拦截授权请求,自定义处理后再调用Cognito原生逻辑,或直接生成符合要求的令牌。

2. 自定义OAuth端点(进阶)

如果需要完全掌控授权流程,可在API Gateway上搭建独立的OAuth授权端点:

  • 对接Cognito的authorize端点获取授权码,自定义处理授权码验证逻辑。
  • 自行生成不透明令牌(而非使用Cognito的JWT),并将令牌与用户身份信息关联存储。
  • 确保端点符合OAuth 2.0 authorization code flow规范,适配谷歌智能家居的OAuth要求。

3. 整合令牌验证逻辑

自定义授权流中,需同步实现令牌验证端点,确保谷歌能正确验证不透明令牌的有效性,验证逻辑需包含:令牌存在性检查、过期时间校验、关联用户身份有效性验证等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:15:49