1

我正在考虑使用 express-session 为通过 OAuth 2 提供者身份验证的用户存储访问令牌,并为客户端应用程序提供安全签名的 cookie。

据我了解,然后我可以在来自会话存储服务器端(例如 mongodb)的后续请求中检索与 cookie 关联的令牌,然后我可以在请求中使用承载授权标头来使用 Express 路由分隔端点。

我遇到了 PassportJS 并试图弄清楚我是否需​​要在我的设置中使用它。

目前,我正在我的快速应用程序中处理登录 POST 请求,然后使用资源所有者密码凭据授予类型请求流发出访问令牌请求。这工作正常,我从提供商那里收到了访问令牌以及刷新令牌和到期时间。

据我所知,PassportJS 为各种提供者提供了身份验证策略,但我不确定它是否支持在我的案例中使用的授权类型。另外,我已经在做请求和接收令牌的工作,所以不确定 PassportJS 在这里对我有多大好处。

通过阅读 express-session 文档,我认为这将为我提供所需的一切,而且我可以根据从 api 网关返回的令牌到期时间设置 cookie 到期时间。

我认为 PassportJS 位于快速会话之上,并且只是访问快速生成的会话,对吗?

4

1 回答 1

1

如果您已经实现了所需的身份验证策略并且只需要存储令牌来识别用户并让他们保持登录状态,那么您只需要 express-session。express-session 使用的 session-cookie 在读取时进行签名验证等。

我认为 PassportJS 位于快速会话之上,并且只是访问快速生成的会话,对吗?

对,那是正确的。但是,您不必将会话与 Passport.js 一起使用(请参阅 Passport.js 文档中的“禁用会话”)

Passport.js 文档 ( http://passportjs.org/docs ) 还阐明 Passport.js 只是身份验证中间件:

它旨在服务于一个单一的目的:验证请求。在编写模块时,封装是一种美德,因此 Passport 将所有其他功能委托给应用程序。

于 2016-04-01T13:59:56.730 回答