nodejs护照身份验证令牌
问题描述:
我正在编写一个nodejs应用程序,我想将它用作Web应用程序以及API提供程序。一旦用户通过身份验证,我想为该用户分配一个令牌用于后续请求。这对Web应用程序的通行证非常有效,因为我只是使用会话中的令牌对用户进行序列化和反序列化。但是,在响应API请求时,没有设置用于存储会话信息的Cookie。理想情况下,护照会在会话和请求主体中查找令牌。有什么办法可以配置护照来完成这个任务吗?nodejs护照身份验证令牌
答
只需在每个请求上使用访问令牌。不需要使用会话。以下是工作流程:
POST /signin
- 的用户名和密码张贴在客户端请求。
- 服务器通过使用护照的本地策略对用户进行身份验证。见passport-local。
- 如果凭证代表有效用户,则服务器将返回由某个生成器生成的访问令牌。 node-jwt-simple是个不错的选择。
- 如果凭据无效,请重定向到
/signin
。
当客户端从授权服务器接收到访问令牌时,它可以向服务器上的受保护资源发出请求。例如:
GET /api/v1/somefunction?token='abcedf'
- 客户端调用与令牌参数一些服务器API。
- 服务器通过使用护照的载体策略来验证令牌。见passport-http-bearer。
参考
Make a secure oauth API with passport.js and express.js (node.js)
答
由于bnuhero提到你不需要会话(虽然这方法有其优点也是如此)。这是我开始的一个锅炉板项目: https://github.com/roblevintennis/passport-api-tokens
这里是一个替代和容易遵循tut(但它会使用会话)。可能是一个很好的交叉引用: http://scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local
还有一参考相关: http://mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/
谢谢SOOOOO多本。出于某种原因,我认为OAuth需要比这更复杂。 – SomethingOn
很好的解释 – Omar
关于令牌生成,有一个永不过期的令牌是安全的吗?我必须让令牌过期并生成新的吗? – sanfilippopablo