使用 ALB 进行身份验证

时间:2021-06-22 15:01:28

标签: amazon-web-services aws-lambda amazon-cognito amazon-elb aws-application-load-balancer

我需要一些关于安全和 ALB 的帮助/建议。

我在应用程序负载均衡器后面有一些 Lambda 函数。每个 Lambda 都是根据 ALB 中配置的基于路径的路由调用的。

我想实现身份验证/授权,以便只为 /PATH1 授权一个 Lambda 函数(在不同的账户中),而另一个 Lambda 函数(也在不同的账户中)仅被授权用于 /PATH2。

实现这一目标的最佳/最简单方法是什么。我一直在尝试使用与 Cognito 集成的 ALB 身份验证。但是我尝试(或在在线资源中找到)与 Cognito 集成相关的所有内容似乎都围绕使用 OIDC 进行用户身份验证。我的场景中没有任何用户。

另外,对于我的用例,我不能使用 API Gateway。

我是否遗漏了一些愚蠢而简单的东西?

感谢您的帮助和见解!

Lambda ALB

1 个答案:

答案 0 :(得分:0)

我认为使用 AWS Cognito 可以满足您的需求。

  1. 在 AWS Cognito 中为您的应用程序创建一个用户池。创建用户池后,您可以配置应用程序集成。

  2. 在用户池的“常规设置”中,您需要创建 2 个应用客户端 - 一个用于源 lambda 1,一个用于源 lambda 2。

  3. 在“应用程序集成”部分添加一个新的“资源服务器” - 它应该是您的 ALB。添加 2 个范围 - 用于路径 1 和路径 2。

  4. 在“应用程序集成”部分,转到应用程序客户端设置。在第 2 步中应该创建了两个客户端。在允许的 OAuth 流中选择客户端凭据和相关范围。

  5. 与您的 Lambda 1 和 Lambda 2 共享相关的客户端凭据。

  6. Lambda 1,2 应从 AWS Cognito 获取访问令牌才能向 ALB 发出请求。 Here 您可以找到有关如何从 AWS Cognito 获取访问令牌的文档。 Lambda 应向 ALB 请求的“授权”标头添加访问令牌。