能否使用Amazon Cognito为私有API提供身份认证?
Amazon Cognito 用于私有API Gateway的相关问题解答
一、Cognito默认认证URL的公网暴露特性
- 标准Cognito用户池生成的OAuth 2.0认证端点(格式为
https://<用户池前缀>.auth.<区域>.amazoncognito.com)默认就是公网暴露的,AWS没有给原生Cognito端点提供私网部署选项,这个端点归属AWS公网服务平面,默认所有公网用户都能解析、访问到。 - 就算你给Cognito配置了自定义域名,只要没有额外加访问控制层,这个域名依然是公网可达的,不存在默认私有的Cognito认证URL。
二、私有API对接Cognito认证的实现方式
- 虽然没有原生私有Cognito认证URL,但完全可以通过架构调整,实现私有API场景下的Cognito OAuth 2.0认证,不需要全链路走公网:
- 如果你要求认证全流程都不走公网:可以在自己的VPC内部署反向代理,通过AWS PrivateLink将Cognito服务接入私有VPC,所有内网客户端、API网关的认证请求全部发往VPC内的代理地址,由代理经PrivateLink转发到Cognito服务;同时给Cognito原生公网端点配置IP白名单,仅允许VPC代理的出口IP访问,阻断所有公网直连请求。
- 如果仅要求API调用链路在私网:不需要改造Cognito端点访问逻辑——Cognito签发的是标准JWT格式Token,你可以提前把Cognito的签名公钥缓存在私有API Gateway本地,用户只需要首次通过企业VPN访问公网Cognito端点获取Token,后续所有API调用的Token校验环节完全在VPC内部完成,不需要每次请求都公网调用Cognito,校验性能和私网安全性都能满足要求。
- 注意不要私自篡改Cognito生成的默认认证URL指向私网地址,Cognito的OAuth流程自带域名、回调地址校验,私自修改会直接触发流程报错,无法正常完成认证。


内容的提问来源于stack exchange,提问作者Bruno Souza
相关产品推荐
相关产品推荐

