php - 向 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 中使用一些服务,它允许您生成令牌,如下所示:
- Lambda:使用 AWS 服务生成令牌
- Lambda:使用 Token 调用 task.php 脚本
- Task.php:使用 AWS 服务验证令牌
- Task.php:继续执行请求的Task
有没有更好的方法来验证 Lambda 调用?如果没有,有没有办法实现以前的机制?
解决方案
验证(第 3 点)建议您不要使用最简单的方法来保护任务调用的 API 密钥。
另一种解决方案是将 JWT 与共享密钥一起使用 - Lambda 使用密钥创建 JWT 令牌,PHP 脚本 task*.php 将使用相同的密钥验证该令牌。它不需要回程来验证 Lambda 的令牌。
编辑:根据您对要求的解释...
如果 PHP 不想知道可以用来验证令牌的秘密,自然会调用(建议单独)共享(通过 ENV 变量)用于创建 JWT 令牌的秘密并能够验证( Yes/Nea) 使用标准 JWT 库。
就像您看到的那样,它创建的复杂性不仅仅是 PHP 共享密钥。
但是,如果您不想管理任何秘密(在 PHP 和/或 Lambda 中)传递无法验证的令牌,那似乎毫无意义(只是拥有令牌的艺术)。
推荐阅读
- java - java Socket未连接:连接
- java - 使用改造的 Json 获取请求不起作用
- java - 如何在java中编写递归四叉树遍历方法?
- java - 下载后如何使用数据库进行合并?
- android - FileObserver 在后台服务调用时不触发事件
- python-3.x - 如何将批处理文件的路径传递给 python 脚本
- java - 使用 Java 中的单个系统调用通过带有标头的套接字发送文件
- c++ - 我需要初始化 std::string
- python - 使用 ctypes 和 wchar_t 时如何从 C++ 获取字符串到 python?
- javascript - Roboto 字体仅在 Windows Edge 中的一个 DOM 元素和 Win7 中的 IE10 上替换了默认的 Time News Roman