Node.js NodeJS中的无状态身份验证库

Node.js NodeJS中的无状态身份验证库,node.js,authentication,single-sign-on,stateless,passport.js,Node.js,Authentication,Single Sign On,Stateless,Passport.js,我相信RESTful API的最佳实践是无状态。我读过关于无状态身份验证的abit,但不完全清楚如何实现它(看起来像一堆令牌等)。PassportJS是一个不错的身份验证库,但它不是无状态的?是否有某种库可以帮助我创建无状态API(带有身份验证)?我想使用SSO(单点登录),比如Google、Twitter等。所以如果库能帮我处理这些(就像PassportJS一样),那就太好了 我目前正在开发一个RESTAPI,并使用PassportJS Basic Auth(用于开发目的),无需会话。您可以告

我相信RESTful API的最佳实践是无状态。我读过关于无状态身份验证的abit,但不完全清楚如何实现它(看起来像一堆令牌等)。PassportJS是一个不错的身份验证库,但它不是无状态的?是否有某种库可以帮助我创建无状态API(带有身份验证)?我想使用SSO(单点登录),比如Google、Twitter等。所以如果库能帮我处理这些(就像PassportJS一样),那就太好了

我目前正在开发一个RESTAPI,并使用PassportJS Basic Auth(用于开发目的),无需会话。您可以告诉策略不要使用会话:

passport.authenticate( 'basic', { 'session' : false } )
passport.authenticate( 'bearer', { 'session' : false } )
passport.authenticate( 'token', { 'session' : false } )

请参见底部。

@fakewaffle是正确的。通过将会话设置为false,可以使passport成为无状态

我使用oauth2rize开发了一个Oauth2服务器。 我使用它向客户端提供访问令牌,然后在
授权
头中的每个请求中发送这些令牌。这些令牌存储在数据库中,因此是无状态的

当然,您可以使用其他提供者对用户进行身份验证,并向客户端提供访问令牌

Passport.js提供多个身份验证提供商,可通过facebook、twitter等第三方提供商进行身份验证。 这里是facebook认证提供商的链接


这是否回答了问题,或者您还想做些什么?

当您说无状态时,我假设您的意思是服务器端没有存储关于用户的会话信息。如果需要,可以使用connect/express库提供的
cookiesession
中间件。这可能是您想要的,但您能否详细说明您对无状态身份验证的解释,以便我能提供帮助。@user568109,您是对的,无状态意味着服务器上没有会话信息
cookiesession
看起来像我需要的,但我仍然需要确定身份验证部分。PassportJS一个很棒的身份验证库使用会话,想知道是否可以让它与
cookiesession
一起工作,或者以某种方式使PassportJS无状态?我对这一点有点陌生。如果我想让用户通过第三方进行身份验证,如Google、GitHub等,我相信它们也使用OAuth 2,我该如何配置?提供商(Google、Facebook、Twitter)与API(Basic、OAuth、OAuth 2)的关系如何?
oauth2orize
是我想要创建OAuth提供商时可以使用的东西吗?如果我想允许我的用户通过Google/GitHub/etc登录/注册,我将使用相应的PassportJS提供商,对吗?如果是这样,我想让他们成为无国籍人,那该怎么办?它没有文档记录,所以我可以使用:
passport.authenticate('google',{'session':false})
?另外,“令牌存储在数据库中,因此是无状态的”:因此我可以使用
redis sessions
,而不更改PassportJS方面的代码,一切都将是“无状态的”?是的,我认为您可以使用redis sessions,尽管我自己没有使用过redis。是的,
oauth2rize
用于创建您自己的OAuth提供程序。另外,你能解释一下你所说的无状态到底是什么意思,这样我就可以更自信地回答了。