无状态身份验证 - 它的真正含义是啥?

Posted

技术标签:

【中文标题】无状态身份验证 - 它的真正含义是啥?【英文标题】:Stateless Authentication - what really does it mean?无状态身份验证 - 它的真正含义是什么? 【发布时间】:2017-03-26 19:39:44 【问题描述】:

我在 Laravel 中使用 Socialite 库。在文档中讲述了一段:

The stateless method may be used to disable session state verification. This is useful when adding social authentication to an API:

这到底是什么意思?我什么时候应该使用它?

【问题讨论】:

【参考方案1】:

实际上,基本身份验证机制使用会话来存储访问者身份,因此当您通过身份验证(在登录表单中提供凭据)后,当您登录后访问另一个页面时,应用程序不会再次要求输入密码。因此,会话用于保持用户在应用程序中的当前状态。大多数情况下都会发生这种情况。

另一方面,在不使用会话的情况下使用无状态身份验证。在这种情况下,应用程序不会将任何数据保存到会话中以在后续请求中识别用户。相反,它会独立验证每个请求。

你什么时候需要这个?

基本上,当您要构建某种API 时需要它,它可以为用户提供资源作为服务,用户可以向您的API 发送请求以从任何地方获取数据,我的意思是用户可能不是您系统的注册用户,但您可以允许用户根据某种基于令牌的身份验证使用来自您服务器的数据。

这不足以描述stateless auth,但这可能会给你一些想法。此外,您可以查看How to do stateless (session-less) & cookie-less authentication 和this,如果您在Google 上使用术语Stateless Authentication 进行搜索,也会发现有用的链接。

【讨论】:

所以,如果我只需要检查用户是否在社交网络中进行了身份验证以及她的帐户 ID 是否在数据库中,那么我可以使用 stateless method? 我的意思是我从社交网络获取经过身份验证的用户数据并将其与自己项目中的帐户相关联 是的,但这取决于您的应用程序/API 要求。有时我们通过检查其他应用程序/身份验证服务器的用户身份来将当前用户的状态存储在应用程序中。这本身就是一个巨大的主题。 另外,搜索Oauth Authentication。 无状态身份验证不保留任何信息,但这取决于每个请求。

以上是关于无状态身份验证 - 它的真正含义是啥?的主要内容,如果未能解决你的问题,请参考以下文章

存储令牌和身份验证状态的安全方法是啥?

如何管理两个身份验证系统:有状态和无状态(缓存)

Flutter web 无密码登录不会触发身份验证状态更改

如何结合单点注销和无状态身份验证

如何使用 Play Silhouette 实现无状态 cookie 身份验证?

使用 Spring Boot 设置无状态身份验证