【问题标题】:Authenticating AWS Lambda Function to a PHP script向 PHP 脚本验证 AWS Lambda 函数
【发布时间】:2020-10-26 22:33:03
【问题描述】:

我有一个具有以下结构的 php webapp:

app
├── user
└── jobs
    ├─ task1.php
    └─ task2.php

用户可以通过网络浏览器执行作业文件夹中的任务脚本。为了保护这些脚本,在每个脚本中都实现了基于会话的身份验证。

为了自动执行这些任务,实现了一个 AWS Lambda 函数,该函数使用它们的 URL(即https://www.domaine.com/jobs/task1.php)通过 HTTP 调用这些脚本。

问题是这个 Lambda 函数也需要进行身份验证。我想到的实现是在 AWS 中使用一些服务,它允许您生成令牌,如下所示:

  1. Lambda:使用 AWS 服务生成令牌
  2. Lambda:使用 Token 调用 task.php 脚本
  3. Task.php:使用 AWS 服务验证令牌
  4. Task.php:继续执行请求的任务

是否有更好的方法来验证 Lambda 调用?如果没有,有没有办法实现以前的机制?

【问题讨论】:

  • 用户是否调用 AWS 流程,或者您必须以完全隔离的方式来运行这些任务、不使用 AWS 的普通用户以及单独使用 AWS?
  • 用户通过webapp调用任务。 Lambda 函数使用调度程序执行。
  • 调度器能否给AWS一个令牌传回来?
  • 或者是AWS的调度器?
  • 你可以把调度器想象成 Cloudwatch

标签: php amazon-web-services api aws-lambda


【解决方案1】:

验证(第 3 点)建议您不要使用最简单的方法来保护任务调用的 API 密钥。

另一种解决方案是将 JWT 与共享密钥一起使用 - Lambda 使用密钥创建 JWT 令牌,PHP 脚本 task*.php 将使用相同的密钥验证该令牌。向 Lambda 验证令牌不需要回程。

编辑:根据您对要求的解释...

如果 PHP 不想知道可以用来验证令牌的秘密,自然会调用(建议单独)共享(通过 ENV 变量)用于创建 JWT 令牌的秘密的 Lambda,并且能够使用标准 JWT 库验证 (Yea/Nea)。

如您所见,它创建的复杂性不仅仅是 PHP 共享密钥。

但是,如果您不想管理任何秘密(在 PHP 和/或 Lambda 中)传递无法验证的令牌,那似乎毫无意义(只是拥有令牌的艺术)。

【讨论】:

  • 要求是不要管理 Lambda 或 PHP 任务中的任何秘密/密码。这就是为什么我需要 AWS 上的服务来管理凭证。
猜你喜欢
  • 2020-11-11
  • 2021-12-03
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2021-12-06
  • 2019-06-11
相关资源
最近更新 更多