首页 > 解决方案 > 向 PHP 脚本验证 AWS Lambda 函数

问题描述

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

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

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

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

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

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

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

标签: phpamazon-web-servicesapiaws-lambda

解决方案


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

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

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

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

就像您看到的那样,它创建的复杂性不仅仅是 PHP 共享密钥。

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


推荐阅读