14

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

4

2 回答 2

24

我目前正在开发一个 REST API 并使用没有会话的 PassportJS Basic Auth(用于开发目的)。您可以告诉策略不使用会话:

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

请参阅底部的此处。

于 2013-08-16T04:42:18.697 回答
6

@fakewaffle 是对的。您可以通过将 session 设置为 false 来使护照无国籍。

我已经使用 oauth2rize 开发了一个 Oauth2 服务器。https://github.com/jaredhanson/oauth2orize/。我使用它向客户端提供访问令牌,然后将其与authorization标头中的每个请求一起发送。这些令牌存储在数据库中,因此是无状态的。

您当然可以使用其他提供商来验证用户并向客户端提供访问令牌。

Passport.js 提供了多个身份验证提供程序,可用于通过 facebook、twitter 等第三方提供程序进行身份验证。这里是 facebook 身份验证提供程序http://passportjs.org/guide/facebook/的链接。

这是否回答了问题,还是您还想做其他事情?

于 2013-08-17T09:21:19.597 回答