我一直在研究 RESTful 身份验证,我仍然无法得到一个非常明确的想法,我如何设计我的网络架构!我有很多问题没有答案..
我希望我的API也能用于移动和网络,而我正在使用Express v4
我不想使用基本身份验证,因为许多帖子建议作为一个简单的出路,或者我可以使用Passport中间件,但我想使用基于令牌的身份验证或类似或更好的东西,我想让我的身份验证,所以我可以更好地理解,但我不知道我该怎么做,或者我清楚地理解!
我将在下面简化我的预期身份验证架构:
将用户名和密码发布到服务器 (我知道如果你想保证连接安全是使用https连接,否则我会暴露我的凭据,或者除了https之外你还有其他选择吗?或者我需要使用带有时间戳和哈希的公钥和私钥在发送到服务器之前我的凭据??,我该怎么做?或其他更好的选择?)
使用salt加密对密码进行散列,并存储散列密码和salt,然后生成令牌ID并发送给客户端!并且令牌ID存储在会话中或使用REDIS数据库???
使用会话是否再次违反REST?但是,如果我不使用会话,我如何存储令牌ID并将其与客户端进行比较???
由于现在我有令牌ID,我怎么能存储在我的客户端???
现在,我有了令牌ID,每当我想向服务器发出请求时,我都会将其放在授权标头中。
当收到请求时,服务器将检查令牌API,并将其与会话令牌进行比较,如果是,则请求允许否则拒绝
这是Express应用程序授权的标准方法吗?
我很遗憾这篇冗长的帖子,但我觉得我应该掌握认证和授权,因为它很重要!我希望有人可以纠正我对REST authenticatino的误解并回答我的问题或建议我更好的方法来做到这一点!
答案 0 :(得分:0)
答案 1 :(得分:0)
您的解决方案是使用JWT令牌进行身份验证。您可以在https://medium.com/dev-bits/a-guide-for-adding-jwt-token-based-authentication-to-your-single-page-nodejs-applications-c403f7cf04f4上了解有关JWT的更多信息
使用JWT令牌,您可以拥有一个基于令牌的身份验证系统,在cookie上没有会话UID,但是您必须实现逻辑来处理已签出类似黑名单令牌之类的令牌。