我应该在一台服务器上创建 JWT,并在另一台服务器上验证它吗?

信息安全 验证 服务器 jwt
2021-09-01 06:54:02

所以假设我有 2 个微服务:

1)。一个 serverless / lambda 函数,由一些硬件事件触发

2)。一个 websocket 服务器,用于处理一些数据

我想确保只有经过身份验证的连接才能连接到 websocket 服务器。但是 lambda 函数没有用于验证自身的识别数据。

我正在考虑在 lambda 函数上创建一个 JWT,带有一个密钥(和短期到期),并使用它与 websocket 服务器进行身份验证。

websocket 服务器也将知道这个密钥,并且可以在允许连接之前验证令牌。

所以我的问题是:我应该为无身份服务器到服务器身份验证这样做吗?前提是我保守秘密。

1个回答

您想要实现的是 Lambda 函数和 websocket 服务器之间经过身份验证的机器对机器通信。

有不同的机制来实现这一目标。使用 JWT 令牌是一种可能,但如果您想让它尽可能简单,还有更简单的方法。

根据您的问题,您希望基于预先共享的秘密方案进行身份验证。最简单的解决方案是使用基本身份验证(或等效的东西,如果您不使用 HTTPS 作为传输协议)。无论您使用什么协议,请确保它是加密的,否则您的秘密可能会泄露。

websocket 服务器将首先评估基本身份验证凭据并决定发送者是否有效并且请求是否得到进一步处理。凭证可以简单到足够长的随机字符串(例如 128 位)。

如果使用 JWT 对您没有额外价值(例如,您想限制令牌的生命周期或在令牌正文中传输其他信息),我建议您尽可能简单,因为复杂性可能会带来隐藏的风险和漏洞。