JWT原理解析_变压吸附的原理

JWT原理解析_变压吸附的原理什么是JWTJSONWebToken(JWT),是一个开放安全的行业标准,用于多个系统之间传递安全可靠的信息.为什么会有JWT在很久很久以前…常见的访问模式是这种的。这个时候因为用户都是通过电脑上的浏览器访问服务端,而由于浏览器有cookie机制,服务端有session机制,所以这个流程是行得通的,伪流程如下随着乔布斯时代的来临,智能手机,微信小程序等用户终端越来越多,服务端需要…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

什么是JWT

JSON Web Token(JWT),是一个开放安全的行业标准,用于多个系统之间传递安全可靠的信息.

为什么会有JWT

在很久很久以前…常见的访问模式是这种的。
在这里插入图片描述
这个时候因为用户都是通过电脑上的浏览器访问服务端,而由于浏览器有cookie机制,服务端有session机制,所以这个流程是行得通的,伪流程如下
在这里插入图片描述
随着乔布斯时代的来临,智能手机,微信小程序等用户终端越来越多,服务端需要同时支持pc端,APP端,微信小程序端等的访问,那么现在的访问模式变成这样了
在这里插入图片描述
而对于APP端和小程序端来说,cookie机制就不友好了。那么服务器如何知道用户是否登录呢?这个时候就需要一种其他的方式。它就是JWT。

JWT的原理浅析

在这里插入图片描述
乍一看好像只是用这个token串来替换吊了sessionid,其实不然,区别大概有以下几点

  1. 对应sessionid来说服务端是有保存的,而token服务端是没有保存的。而仅仅是通过算法解析来验证合法性
  2. 传统的sessionid机制实现过于复杂,且可能是tomcat等容器默认实现了,要改动也是很不方便的。所以用token

JWT原理深入解析

jwt生成的token串如下所示
在这里插入图片描述
一般而言由三个小数点分割为三段。
第一段为头部信息,是非加密的,上诉看起来不是明文是因为有做Base64URL转码。通常明文如下

{
  "alg": "HS256",
  "type": "JWT"
}

指明了token的加密算法等信息

第二段为用户自定义信息,通常你可以在这里放入username等信息,是非加密的,上诉看起来不是明文是因为有做Base64URL转码,所以不宜存储用户的手机号等私密信息。

第三段为签名,使用 Header 里面指定的签名算法(默认是 HMAC SHA256),按照下面的公式产生签名。

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

该部分用以给服务器验证token的合法性。由于签名秘钥只有服务端有,所以别人没法伪造和篡改token.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180809.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 打造自己的Android源码学习环境之一:序[通俗易懂]

    打造自己的Android源码学习环境之一:序[通俗易懂]打造自己的Android源码学习环境之一:序为什么要打造自己的Android源码学习环境有一个可以编译的Android源码环境,可以在任何自己想了解的源码中加上log信息,验证自己的理解是否准确,有助于理解Android的运行细节。做Android开发,了解Android的运行机制和原理是很有帮助的,尤其是想对Androidframework进行深度定制。面向的读者如果在手机厂商或者Android

    2022年5月5日
    42
  • 递归方法

    递归方法一、什么是递归递归是指函数直接或间接调用自身的一种编程方法。调用的过程就是“递”,返回的过程就是归。基本上,所有的递归问题都可以用递推公式来表示。二、递归满足的三个条件1.一个问题的解可以分

    2022年7月4日
    27
  • git 回滚到指定版本_git回滚多了怎么办

    git 回滚到指定版本_git回滚多了怎么办我们在GIT操作项目时,往往会遇到很多需要回滚的代码。我们可以回滚到任意之前的版本,case如下:1.首先找到你需要回滚的版本号,可以通过日志查看命令行:gitlog-32.选择上图红色箭头执行的commit版本号,第一个时最后提交的,我们回滚到第二个commit:f3eb8f9df34dc6ba47e477e05c8772a62d653fbb命令行:gitr

    2025年7月29日
    0
  • TFS 2010 让安装更简单,也让VSS成为历史「建议收藏」

    TFS 2010 让安装更简单,也让VSS成为历史「建议收藏」      一转眼VS2010RC(ReleaseCandidate)版本已经发布一月多了,RTM(ReleaseToManufacturer)版本也快妥了,已经进入了最后的倒计时,只等4月12号发布了。TFS2010也将一起正式发布,相对于2005和2008,2010将是具有里程碑意义的一个版本,就像它总设计师BrianHarry在下面的Channel9采访中所描述的:“T

    2022年9月24日
    4
  • Linux系统的内核态和用户态[通俗易懂]

    Linux系统的内核态和用户态[通俗易懂]一、 Unix/Linux的体系架构  如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核)。内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程序运行的环境。用户态即上层应用程序的活动空间,应用程序的执行必须依托于内核提供的资源,包括CPU资源、存储资源、I/O资源等。为了使上层应用能够访问到这些资源,内核必须为上层应用提供

    2022年9月17日
    1
  • PCEP 协议学习笔记

    PCEP 协议学习笔记RFC5440章节:PCReq消息响应PCC发送的PCReq的

    2022年9月7日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号