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

Serverless中为单个API网关端点配置多种授权器的方法

单个API Gateway端点配置多种授权器的解决方案

刚好之前做过类似的跨应用授权场景,给你分享几个亲测有效的方案:

方案一:利用API Gateway原生多授权器支持(推荐)

AWS API Gateway现在已经支持单个端点绑定多个授权器了,完全适配你的需求,步骤也很清晰:

  • 先在API Gateway控制台里分别配置好你的Cognito User Pool授权器和AWS_IAM授权器,确保各自单独测试能正常工作
  • 进入目标端点的「集成请求」设置,找到「授权」模块,点击「添加授权器」,把这两个授权器都添加进去
  • 这里的授权逻辑是OR关系——只要其中一个授权器验证通过,请求就会被放行,完美匹配你的iOS(IAM认证)和Angular(User Pool认证)双场景
  • 测试小技巧:用Postman分别模拟两种请求:一种带AWS IAM签名,一种带Cognito User Pool的ID Token,确认都能正常访问端点

方案二:自定义Lambda授权器作为统一入口(兼容老版本)

如果你的API Gateway是比较旧的版本,或者需要更灵活的授权逻辑,可以用自定义授权器来统一处理两种认证方式:

  • 写一个Lambda函数,在里面做两种认证的判断:
    • 如果请求头的Authorization是Bearer <token>格式,就调用Cognito的验证接口校验User Pool Token
    • 如果是AWS4-HMAC-SHA256开头的签名,就用AWS SDK验证IAM签名的合法性
  • 把这个自定义授权器绑定到目标端点上,所有请求都会先经过这个Lambda判断
  • 优势是可以自定义额外的权限逻辑(比如根据用户组做细粒度控制),缺点是需要自己维护Lambda代码和依赖

一些注意事项

  • 权限配置要到位:IAM角色/用户需要拥有execute-api:Invoke权限;Cognito User Pool的应用客户端要正确关联到授权器,并且token的受众(aud)要匹配
  • 多授权器模式下,API Gateway会按你添加的顺序依次尝试验证,你可以把请求量更大的那个授权器放在前面,提升验证效率
  • 测试时一定要覆盖两种认证场景,避免出现某一种授权失效的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:21:24