Php 简单的令牌式身份验证
以下认证系统是否合理:Php 简单的令牌式身份验证,php,authentication,token,Php,Authentication,Token,以下认证系统是否合理: 客户端使用用户名和密码调用登录端点到主服务器。主服务器将此信息发送给另一个身份验证服务器(该服务器将不会收到进一步的通知),如果此信息有效,则该服务器将返回yes/no以及主服务器知道的用户ID。如果是,则生成一个随机令牌(使用一些抛出随机字符串的加密库),并将其散列(使用PHP的password_hash())和12小时后的到期日存储在用户记录中。将令牌返回到客户端 客户端现在将“Authorization:Token-Token+HERE+ABCD1234”添加到对其
我忘了什么?这是非常不安全的吗?如果你看到谷歌的oAuth进程,你就会知道授权是如何为他们工作的 它们有不同的服务器用于授权和API调用。用户向授权服务器发送身份验证详细信息并接收代码。谷歌正在进行获取用户同意访问详细信息的过程,但您可以跳过此过程获取同意,只需返回成功的详细信息的代码 此代码可进一步用于从API服务器获取访问令牌。因此,您对API服务器的第一个请求是获取访问令牌。谷歌也有刷新你的访问令牌的工具 所有对API服务器的后续请求都必须包含访问令牌。因此,您似乎错过了使其更安全的代码交换过程
更多信息:您的方案与标准服务器端会话没有太大区别,在标准服务器端会话中,会话ID通常只是一个随机令牌,存储在客户端的cookie中,有两个改进:
- 您将使用授权头来传递令牌,而不是cookie。这起到CSRF保护的作用
- 您可以在服务器端散列一个令牌。这有助于防止会话劫持,以防有人访问服务器端的令牌存储