如何为AWS API Gateway的大量机器对机器客户端实现身份认证?
AWS B2B API身份认证方案选型困惑
我正在为客户开发一款面向其B2B客户的API,目前在AWS身份认证机制上遇到瓶颈。我有企业级集成经验,但并非身份认证领域专家。带Client ID和Client Secret的OAuth2是行业公认标准,但AWS对该模式的支持让我觉得受限。
核心需求
- 服务100+ B2B客户,支持他们将API集成到自身ERP、CRM等业务系统
- Lambda中需获取已认证客户的信息,用于调取自定义字段或标签
- 客户技术能力分层:部分有开发团队可适配标准方案,部分仅能使用Power Apps、API轮询器等标准化工具,仅需提供端点、授权等基础信息
已尝试的方案及痛点
- AWS Cognito:Client ID/Client Secret是应用客户端级别而非客户级别,为每个客户单独创建用户池和应用客户端显得不合理;且Cognito更偏向基于URL的用户认证场景,无法让ERP集成类客户通过
/token端点获取令牌(该端点似乎需要用户级别的Client ID/Client Secret) - IAM认证:已实现,但AWSSig4签名对部分非技术客户门槛过高;且IAM权限易关联AWS内部资源,我希望通过IAM策略之外的方式做客户隔离
- 基础认证:不倾向使用,且无原生AWS服务支持
- 自定义Lambda授权器:可行,但觉得为这类常规需求做自定义实现有点冗余;若要通过它支持OAuth2,还需依赖第三方身份提供商(IDP)
- 对比Azure:之前对接过的供应商提供的端点、Client ID/Client Secret加
cp-apim-subscription-key模式源自Azure,疑惑为何Azure原生支持这类模式,AWS却没有类似方案
待解答的问题
- 是否遗漏了AWS的某些基础功能,或是AWS本身的技术路径与其他厂商不同?
- 是否可以在Cognito中设置10年有效期的刷新令牌,直接提供给客户使用?
- 是否最终还是需要落地自定义Lambda授权器方案?
内容的提问来源于stack exchange,提问作者perage
相关产品推荐
相关产品推荐

