amazon-web-services - 使用 Cognito 和 JWT 的 K8s 的 AWS API 网关
问题描述
我有 AWS K8s 集群(EKS),我想使用 AWS API 网关来保护端点并将授权逻辑与微服务分开。我需要有 2 个身份验证模式:
- 发送登录名/密码并获取 JWT
- OAuth2
API 网关和 K8s 集群之间通过ALB Ingress Controller集成。看起来不错。然后我需要以某种方式进行身份验证。AWS 提供 Cognito 作为一项服务来管理用户以及拥有自己的身份提供商的可能性。我知道我们可以将 API 网关授权器与 Cognito 集成,但我无法理解以下内容:
- 例如,如何将 Cognito 与已经存在的 LDAP 集成?(SAML?)
- 我可以使用自己已经创建的 OAuth2 身份验证端点吗?
- 如何使用登录名/密码进行身份验证并使用 API 网关 + Cognito 检索 JWT?
解决方案
1 例如,如何将 Cognito 与已经存在的 LDAP 集成?(SAML?)
通过 SAML IDP 使用 Cognito 用户池。 https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-saml-idp.html
2 我可以使用自己已经创建的 OAuth2 身份验证端点吗?
是的,对 Cognito 身份池使用 Developer Authenticated Identities。从现有用户数据库进行身份验证的用户将获得身份池的授权,方法是担任身份池的经过身份验证的 IAM 角色,在该角色中设置对 AWS 资源的访问级别。 https://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html
3 如何使用登录名/密码进行身份验证并使用 API 网关 + Cognito 检索 JWT?
看到正在使用 API 网关,实现此目的的最佳方法是在使用 Cognito 用户池的 API 网关中实现 Lambda 授权方。然后,您将能够在该 Lambda 授权方中获取 JWT 令牌,授权方中的声明也将在集成请求 vtl 中可用,并可使用 $context 访问。即
$context.authorizer.claims.sub
https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html
推荐阅读
- python - AWS Lambda 初始化代码(Python)之谜
- powershell - 如何使用 PowerShell 指定 FolderBrowserDialog 中显示的初始路径
- python - 使用 Python 查找文件或 csv 中的最大列数
- javascript - 滚动显示图像:保持底部图像固定,直到完成视差覆盖,然后继续页面滚动
- java - 如何使用 gson 从 json 读取对象数组?
- c# - 如何使用多个枚举(两个枚举)来控制对象将同时旋转的两个轴?
- javascript - 在这个例子中如何创建一个简单的列表?
- git - 从 Atom 提交到 Github,与 GPG 签署
- sql - 表名前的两个点是什么意思
- angular - NativeScript 应用程序是用户在移动设备上看到的还是他从应用商店下载的?