API身份验证,一次性令牌与动态令牌
我们正在开发一个新项目,我们是两个主要开发人员,并且在如何使用令牌保护服务器与客户端之间的通信方面处于十字路口。 第一个建议:(一次性令牌AKA静态令牌) 客户端通过向api发送用户名和密码以及current_time(此变量也将保存在服务器的数据库和客户端中)来请求主令牌,服务器解释输入并呈现哈希令牌(例如: 58f52c075aca5d3e07869598c4d66648)将其保存在数据库中,并将其返回给客户端。 客户端现在保存主令牌,并使用主令牌+身份验证请求中发送的current_time变量创建新的哈希令牌(让我们将此新令牌称为main_token),服务器也将执行相同操作,并使用相同的算法创建相同的令牌。 客户端每次查询服务器API时,都会将main_token发送到服务器,现在服务器会将其中生成的令牌与客户端发送的main_token进行比较,如果匹配,则表示用户是真实的 第二个建议:(动态令牌) 客户端生成两个随机键($ key1 = rand(10000,90000); $ key2 = rand(10000,90000);)在API上的每个请求上,客户端都会使用查询类型创建一个哈希,而两个键分别为一个复杂的算法,然后将这两个密钥+哈希发送到服务器 服务器使用与客户端相同的算法,创建一个哈希,然后将其与客户端发送的哈希进行比较,如果匹配,则服务器继续处理查询 现在的问题是,哪一种是用于保护API请求的最合理,最安全的方法?