为用户身份验证生成“令牌”的最佳方法是什么

时间:2021-02-23 00:13:31

标签: php security authentication token

假设我有一个包含数千个用户帐户的 MySQL 数据库。这些帐户包含大量数据,但为了验证目的,它们每个都包含一个用户名和一个(散列和加盐的)密码。现在,当用户请求登录时,我将从他们那里获取用户名和密码,通过 WSS 将其传输到 Node.js 服务器,然后通过 HTTPS 将其传输到另一台服务器上的 PHP 文件。在该服务器上,我将在 MySQL 数据库中查找用户名,如果我找到一个帐户,我将散列密码并查看它是否与该用户名的密码匹配。如果它们都匹配,那么我希望 PHP 文件创建各种“验证令牌”,保存它(并将其与已验证的帐户相关联)并将令牌发送回 Node.js 服务器。然后我希望 Node.js 服务器将该令牌发送回客户端并让客户端保存该令牌。现在,下次用户通过 WSS 连接到 Node.js 服务器时,我希望客户端检查现有令牌,如果存在,我希望它通过 WSS 将该令牌发送到 Node.js 服务器,即 Node.js 服务器。 js 服务器通过 HTTPS 将其发送到一个 PHP 文件,并在该 PHP 文件中查看该令牌属于哪个帐户,然后完成登录...

所以我想我的第一个问题是:这是一个好模型吗?这是一个好主意吗,这是否安全,还是我应该以不同的方式这样做?

我的第二个问题是:生成此令牌的最佳方法是什么?它应该是完全随机的吗?应该是字母+数字的组合吗?它应该是一些随机值的散列吗?我应该如何处理这个“令牌”的生成?


澄清一下,我不是在问如何构建服务器或发出请求或传输数据或任何类似的东西,我只是在问生成可用作“令牌”的最安全方法是什么身份验证的程度与可以使用用户名+密码的程度相同。

提前致谢!如果这是一个非常愚蠢的问题,我很抱歉。

1 个答案:

答案 0 :(得分:0)

我认为您在描述 JWT。有 several packages 在 PHP 中实现了这一点。