nodejs护照身份验证令牌

Aus*_*tin 70 authentication node.js express passport.js

我正在编写一个nodejs应用程序,我想将其用作Web应用程序以及API提供程序.一旦用户通过身份验证,我想为该用户分配一个令牌,用于后续请求.这适用于Web应用程序的护照,因为我只是在会话中使用令牌序列化和反序列化用户.但是,在响应API请求时,没有设置cookie来存储会话信息.理想情况下,护照会在会话和请求正文中查找令牌.有没有办法配置护照来完成这个?

bnu*_*ero 128

只需在每个请求上使用访问令牌.不需要使用会话.以下是工作流程:

POST /signin
Run Code Online (Sandbox Code Playgroud)
  1. 用户名和密码将发布在客户端请求中.
  2. 服务器使用护照的本地策略对用户进行身份验证.看护照本地.
  3. 如果凭证代表有效用户,则服务器返回由某个生成器生成的访问令牌.node-jwt-simple是一个不错的选择.
  4. 如果凭据无效,请重定向到/signin.

当客户端从授权服务器接收访问令牌时,它可以向服务器上的受保护资源发出请求.例如:

GET /api/v1/somefunction?token='abcedf'

  1. 客户端使用token参数调用一些服务器api.
  2. 服务器使用护照的承载策略对令牌进行身份验证.请参阅passport-http-bearer.

参考

使用passport.js和express.js(node.js)创建一个安全的oauth API

  • 很好的答案,但虽然没有完全相关(并且抱歉两年后评论!),你不应该在GET参数中传递令牌!有很多潜在的地方你可以泄漏它,有意图的人会得到它. (4认同)

Rob*_*Rob 7

正如bnuhero提到的那样,你不需要会话(尽管这种方法也有其优点).这是我正在开始的锅炉板项目:https: //github.com/roblevintennis/passport-api-tokens

这是一个替代和易于遵循的啧啧(但它会使用会话).可能是一个很好的交叉引用:http: //scotch.io/tutorials/javascript/easy-node-authentication-setup-and-local

还有一个参考相关:http: //mherman.org/blog/2013/11/11/user-authentication-with-passport-dot-js/