基于令牌的身份验证(在Node.js中)

时间:2012-10-11 09:39:18

标签: node.js authentication cryptography

更多关于实施基于令牌的身份验证系统的一些建议的一般性指出问题,由Node.js似乎没有做好准备的事实。

由于我们希望构建一个无状态的API服务器来操作我们的数据存储,我们希望为我们的用户提供一个身份验证令牌(一个“骑车票”),它将包含在每次API调用中。< / p>

问题是如何以安全的方式生成此令牌。

[想法1]   - 用户通过向服务器发送(user-id,password-hash)来请求身份验证令牌   - 服务器响应(user_id,expiry_date),由API服务器随机密钥签名   - 服务器可以在每个请求上检查令牌的有效性   - 服务器需要在一段有限的时间内存储令牌

[想法2]    - 与上述相同,但避免发送密码哈希    - 用户请求身份验证令牌    - 服务器向用户发送挑战,然后用户使用他的(user_id,password_hash)对散列挑战    - 服务器对此进行验证,然后根据想法1生成令牌。

[想法3]   - 使用密码哈希本身作为在每个请求中发送的身份验证令牌,以避免令牌管理问题   - 更简单但没有时间限制

[创意4]   - 与2相同,但challenged_hashed_by_(user_id,password_hash)成为令牌并在每个请求中发送

感谢您的任何指示

2 个答案:

答案 0 :(得分:0)

您是否看过oauth 2.0:http://hueniverse.com/2010/05/introducing-oauth-2-0/

还有很多可以为你处理的库?

答案 1 :(得分:0)

您可以将OAuth 2.0与Passport配合使用。 Passport本身就是如何使用它的一个很好的例子,它是保护无状态API的适当解决方案,而不是在每次请求时都发送用户密码。