当 Web 成为人们可以实际执行有意义的令牌任务(如银行或工作)的地方时 ,隐含的令牌需求就是对使用服务的人进行身份验证 。 毕竟,令牌我们不能只相信使用这些服务的令牌人使用了它们。必须实施某种方式,令牌让人们可以证明他们是令牌他们所说的那个人 。 最初,令牌这就像用户名和密码组合一样简单。令牌理论上,云计算令牌您是令牌唯一知道您的密码的人
。 通常
,令牌您会使用您的令牌凭证在网页上填写表单,然后点击提交。令牌您的令牌详细信息将通过 HTTP 发送 POST 请求到服务器,服务器将检查您的令牌密码是否与存档的内容匹配,然后向您发放一个 cookie 。 该 Cookie 将包含您的香港云服务器Token,并将与每个后续请求一起提交,以便服务器知道在每个后续请求中信任您。 如果需要在会话期间存储数据
,例如您选择的数据或首选项
,则可以将其存储在session中
。有时,这被称为 sessionizing 您的数据。 在用户session中存储数据是存储和检索瞬态信息的一种简单且廉价的方法
。 不幸的是建站模板
,这种方法有几个缺点: 至于在用户的session中存储数据,如果有一台服务器为应用程序提供服务,则此方法有效。当服务器跨越多个服务器时 ,所有服务器都必须保持其会话同步
。 为此 ,服务器租用人们设计了许多方法 ,例如将会话数据存储在数据库服务器上或某种内存存储中
,但从长远来看
,更好的解决方案是简单地完全删除会话。 依赖服务器上的可变数据存储不是一个好主意
,理想情况下
,使用者应该拥有应用程序运行所需的所有信息。 回到我们最初的例子 ,当我们看另一个人时 ,我们可以快速评估我们是源码库否认识他们 。根据我们是否了解他们,我们可以向他们提供有关我们生活和发生的事情的更多细节。 但我们不能指望总是能够看到信任他们的人。有时 ,我们可以在不见对方的情况下进行信任交换。 例如,当您上班时,您可能有一张刷卡 ,您可以在读卡器上刷卡。读卡器会读取您的卡,如果卡有效
,则通过身份验证。这更好,因为您不必向任何人透露您的密码或任何对您来说保密的事情。 我们知道使用读卡器进入建筑物是安全的
,因为信任链是完整的
。读卡器是由值得信赖的公司发行的 ,您的门禁卡也可能由他们发行。我们可以把卡带走
,在某个地方存放很长时间
,当我们回来的时候,它仍然是值得信赖的。 如果有人打开卡并更改或更改它以试图给他们更多的访问权限,他们反而会损坏卡 ,它就会停止工作。 JWT 有点像这样。它们由三个独立元件组成: 计算签名的算法是 header 和 payload 的加密结果与 secret 相结合。因此,如果header或payload发生更改 ,则签名将无效,并且内容将不受信任。 因此
,即使我们在 JWT 中包含数据以表明用户是管理员,只要签名得到正确验证,我们就可以确保 JWT 仍然是该事实的正确表示 。因为公众无法访问我们的签名密钥,所以我们可以确定唯一可以颁发该 JWT 的实体是我们的服务器。 我们可以在 https://jwt.io 这样的网站上轻松查看 JWT 令牌的内容。 现在我们有了令牌,下一个问题应该是我们如何将其呈现给服务器 。以前的身份验证方法需要基于 Cookie 的身份验证 。但是 ,通常使用我们的 JWT 令牌
,我们会将它们与受保护的资源一起呈现给服务器,以便我们可以被授予访问权限。 这意味着在我们的 HTTP 方法(POST、GET 等)中,我们还将包含一个 Authorization 值
。它通常如下所示: Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.uXrIhrveuvbR4tD1ULholQObboLVC-wIfJOEVElEzcs 使用此令牌,服务器可以在分析令牌中的声明之前验证令牌 。但是,索赔包含哪些内容? 声明只是 JWT 中包含特定令牌信息的字段。它们分为三类:注册 、公共和私有。 已注册的声明是可在 JWT 令牌中使用的标准字段
。它们不是必需的
,但通常会在大多数代币中找到。 公共声明由应用程序定义 ,并与正在使用的应用程序的数据相关
。 私有声明是用于在实现之间共享信息的自定义声明
,但只有涉及的实体知道声明是什么以及它们的工作原理。 我们详细介绍了什么是 JWT 、它们的工作原理以及我们可以信任它们的原因。通常,它们与 OAuth 一起被提及,有时人们会尝试比较它们或尝试选择一个而不是另一个。 但是 ,它们没有可比性,而是 OAuth 通常使用 JWT 令牌来传输与其相关的信息。由于 JWT 是一种以防篡改方式传输重要数据的可靠方法
,因此它们是在 OAuth 2 中使用的不错选择
。 例如
,OAuth 发送的 ID 令牌始终作为 JWT 发送
。当同时发送访问令牌时
,它通常也作为 JWT 发送 。OAuth 使用 JWT 来实现与其相关的各种流
。 另一种类型的令牌是 Bearer 令牌,它与 Authorization 标头中的每个 HTTP 方法一起发送。它充当安全资源,指示令牌的持有者有权访问相关资源 。因此
,请务必仅将 Bearer 令牌发送到需要它的受保护终端节点 。 OAuth 可以使用任何其他可行的系统来传输其令牌
,但是因为 JWT 是一个标准
,所以这就是正在使用的系统。事实上,OpenID Connect 正在扩展 JWT。 JWT 和 OAuth 是安全的异步 Web 的关键部分 。正如我们在本文中所看到的,他们不是竞争对手,您也不应该(或您可以)选择一个而不是另一个。JWT 以 OAuth 的补充能力存在 ,并且在将可信数据从 A 点移动到 B 点方面做得非常出色
。身份鉴权
JWT

携带您的令牌
OAuth 2.0 与此有何关系
?
结论