SPA和node.js服务器的身份验证

Bob*_*ith 4 javascript authentication node.js express

我有一个非常简单的node.js应用程序构建在express上,它使用会话内存存储处理身份验证.用户基本上通过以下方式登录:

app.post('/sessions', function(req, res) {
            // check username/password and if valid set authenticated to true
        if (authenticated){
            req.session.user = req.body.username;
                } ...
});
Run Code Online (Sandbox Code Playgroud)

然后在来自浏览器的每次调用中,调用一个requiresLogin中间件函数,该函数检查是否已设置会话上的该用户属性.

我现在正在将应用程序转换为基本上只提供可能会或可能不会在浏览器中使用的服务,因此我不打算使用cookie /会话,而是考虑更改系统,以便将其发布到/ getToken(而不是/ sessions)将返回与用户帐户关联的临时随机令牌,然后可以使用该临时随机令牌访问服务一段时间.然后,使用该服务将需要在每次调用中包括有效令牌.(我认为这比每次传递用户名/密码更好,以便在调用get令牌后,密码不必存储在客户端计算机的内存中?)

这样的系统基本上和上面的系统一样安全,还是有更多的标准/安全方法来处理这个问题?处理这样的事情的标准方法是什么?

在此先感谢您的帮助!

srq*_*inn 6

您正在寻找的是HMAC,这里有一篇很棒的文章,可以了解如何为您的服务实施.

至于基于会话的安全性是否比公共/私人密钥对更安全,受到广泛争论,并且实际上取决于实现/应用.在您的情况下,由于您希望在面向公众的API上进行每次请求身份验证,因此HMAC就是您的选择.