当前位置: 首页 > 知识库问答 >
问题:

在RESTful API中存储身份验证令牌,而不使用HTTP会话

龙成仁
2023-03-14

共有1个答案

宿嘉
2023-03-14

REST代表表征状态转移,这一体系结构是由Roy Thomas Fielding在其论文的第5章定义的。

Fielding为REST架构定义了一组约束。其中一个约束是客户端和服务器之间的无状态通信,定义如下(他的论文中没有重点介绍):

5.1.3无国籍

HTTP身份验证框架的某些方面限制了新的身份验证方案的工作方式:

  • 假定HTTP身份验证是无状态的:必须在请求中提供对请求进行身份验证所必需的所有信息,而不是依赖于服务器记住先前的请求。[...]

和身份验证数据(凭据)应属于标准的HTTPauthorization头。RFC 7235中:

Authorization = credentials

[...]

请注意,这个HTTP头的名称很不幸,因为它携带的是身份验证数据,而不是授权。无论如何,这是发送凭据的标准头。

当执行基于令牌的身份验证时,令牌就是您的凭据。在这种方法中,您的硬凭据(用户名和密码)被交换为在每个请求中发送的令牌。同样,必须对每个请求执行身份验证,因此您不会利用服务器上的任何存储上下文。

 类似资料:
  • 我已经使用active directory登录,在验证active directory中的用户名和密码是否正确后,我想在passport中创建access。但是如果没有在中验证,我就无法创建令牌。 我从活动目录验证后尝试此代码 错误: 调用未定义的函数App\Http\Controllers\API\createToken() 如何在passport中创建访问令牌而不使用?

  • 我有一个LaravelAPI(实际上是LumenAPI)服务于VueJS前端。Vue应用程序允许用户登录到谷歌。然后将Google令牌发送回Lumen API,后者使用Google验证令牌,然后验证电子邮件地址是否为有效用户。然后它生成一个令牌,与用户一起存储在数据库中,并返回用户对象。 我没有使用Passport或jwt auth之类的东西。那么现在,我如何使用默认的Auth中间件来验证(现在已

  • 问题内容: 我正在PHP Lumen中构建一个应用程序,该应用程序在登录时会返回令牌。我不知道如何继续进行。 我应该如何使用这些令牌维护会话? 具体来说,如果我使用reactjs或原始HTML / CSS / jQuery,如何将令牌存储在客户端,并在我为Web应用程序的安全部分提出的每个请求中发送令牌? 问题答案: 我通常要做的是将令牌保留在本地存储中,这样即使用户离开站点,我也可以保留令牌。

  • 我正在PHP Lumen中构建一个应用程序,它在登录时返回令牌。我不知道如何继续。 我应该如何使用这些令牌维护会话? 具体来说,如果我使用reactjs或vanilla HTML/CSS/jQuery,我如何在客户端存储令牌,并在我为web应用程序的安全部分发出的每个请求中发送它们?

  • 我在身份验证中使用基于令牌的方法,但在许多博客中,我读到他们将令牌存储在数据库中。 我们需要将令牌存储在DB中的基于令牌的身份验证中吗? https://scotch.io/tutorials/the-ins-and-outs-of-token-based-authentication 在这个博客中,提到我们正在签署令牌而不是存储在数据库中,我认为这应该是实现真正无状态的方法。

  • 问题内容: 这是一个具有登录屏幕的现有系统,现在我将某些服务公开为REST服务。我为此Rest(jersey)服务构建了一个身份验证令牌登录系统。用户发送用户名密码,然后服务器返回计算为的令牌; 用户将使用此令牌登录应用程序以获取进一步的请求。并且服务器将令牌的副本与时间戳和用户ID一起保留在数据库中,如果时间戳有效,则登录该用户。 考虑使用 HTTPS ,有几个问题; 我的设计看起来一切正常吗?