当前位置: 首页 > news >正文

wordpress微信登陆插件上海seo优化公司kinglink

wordpress微信登陆插件,上海seo优化公司kinglink,b2b还是自己做网站,网站建设的关键1.JWT是什么? jwt(json web token的缩写)是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以json对象安全地传输信息,此信息可以验证和信任,因…

1.JWT是什么?

jwt(json web token的缩写)是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以json对象安全地传输信息,此信息可以验证和信任,因为它是数字签名的,jwt可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对,进行签名。

通俗解释:JWT简称JSON Web Token,也就是通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输,在数据传输过程中还可以完成数据加密、签名等相关处理。

2.JWT能做什么?

2.1 授权

使用JWT的最常见方案,一旦用户登录,每个后续请求将包括JWT,从而允许用户访问该令牌允许的路由、服务和资源,单点登录是当今广泛使用JWT的一项功能,因为他的开销很小并且可以在不同的域中轻松使用。

2.2 信息交换

JSON Web Token是在各方之间安全地传输信息的好方法,因为可以对JWT进行签名(例如:使用公钥/私钥对),所以您可以确保发件人是他们所说的人,此外,由于签名是使用标头和有效负载计算的,因此你还可以验证内容是否遭到篡改。
作用:传输数据和安全验证,其主要会用在安全验证

3. 基于JWT认证

3.1 认证流程

在这里插入图片描述

  1. 首先,前端通过Web表单将自己的用户名和密码发送到后端的接口,这一过程一般是一个HTTP POST请求,建议的方式是通过SSL传输(https协议),从而避免敏感信息被嗅探;
  2. 后端核对用户名和密码成功后,将用户的id等其他信息作为JWT Payload(负载),将其与头部分别进行Based64编码拼接后签名,形成一个JWT(token),形成的JWT就是一个形同lll.zzz.xxx的字符串(token、head.payload、singurater三部分组成,中间用点.连接);
  3. 后端将JWT字符串作为登录成功的返回结果返回给前端,前端可以将返回的结果保存在localStorage或sessionStorage上,退出登录时前端删除保存的JWT即可;
  4. 前端在每次请求时将JST放入HTTP Header中的Authorization位(解决XSS和XSRF问题-防伪跨拦截攻击);
  5. 后端检查是否存在,如存在验证JWT的有效性,例如:检查签名是否正确,检查Token是否过期,检查Token的接收方是否是自己(可选);
  6. 验证通过后,后端使用JWT中包含的用户信息进行其他逻辑操作,返回相应的结果;

3.2 JWT优势

  1. 简洁(compact):可以通过URL,POST参数或在HTTP header发送,因为数据量小,传输速度也很快;
  2. 自包含(Self-contained):负载中包含了所有用户所需要的信息,避免了多次查询数据库;
  3. 因为token是以json加密的形式保存在客户端的,所以JWT是跨语言的,原则上任何web形式都支持;
  4. 不需要在服务端保存会话信息,特别适用于分布式微服务;

4.JWT组成

4.1 令牌组成

令牌就是token,类型为String,x(标头header).y(payload负载).z(签名signature)三段组成

  1. 标头(Header);
  2. 有效载荷(payload)
  3. 签名(signature)

4.2 Header

//标头通常是由两部分组成,令牌的类型(即JWT)和使用的签名算法,例如HMAC、SHA256或RSA,它会使用Base64编码组成JWT 结构的第一部分;
//注意:Base64是一种编码,也就是说,它是可以被翻译回原来的样子,它并不是一种加密过程;

//jwt将下面的头信息数据进行Base64编码(类似于加密),后期是可以进行解码;

//头部的默认值,后期可直接使用默认,不再重新写
{"alg":"HS256","typ":"JWT"
}

4.3 Payload

//令牌的第二部分是有效负载(自包含),其中包含声明,声明式有关实体(通常是用户-用户名、用户id等)和其他数据的声明,同样的,它会使用Base64编码组成JWT结构的第二部分;

//注意:第二部分的有效负载不要放用户特别敏感的信息(例如:密码);

//jwt将下面的头信息数据进行Base64编码(类似于加密),后期是可以进行解码;

{"sub":"12345678","name":"xx","admin":true
}

4.4 Signature

前面两部分都是使用Base64进行编码的,即前端可以解开知道里面的信息,Sigurate需要使用编码后的header和payload以及我们提供的一个密钥,然后使用header中指定的签名算法(HS256)进行签名,签名的作用是保证JWT没有被篡改过
heder+payload+随机签名(保密性极高)
如:

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

签名目的:
最后一步签名的过程,实际上是对头部以及负载内容进行签名,防止内容被篡改,如果有人对头部以及负载的内容编码之后进行修改,在进行编码,最后加上之前的签名组合形成新的JWT的话,那么服务器就会判断出新的头部和负载形成的签名和JWT附带上的签名是不一样的,如果要对新的头部和负载进行签名,在不知道服务器加密是用的密钥的话,得出来的签名也是不一样的;

信息安全问题
1.Base64是一种编码,是可逆的,那么我的信息不就被暴露了吗?
答:在JWT中,不应该在负载中加入任何敏感的数据,在上面的例子中,我们传输的是用户的User ID,这个值实际上不是什么敏感内容,一般情况下被知道也是安全的,但是像密码这样的内容就不能被放在JWT中了,如果将用户的密码放在了JWT中,那么怀有恶意的第三方通过Base64解码就能很快的知道你的密码了,因此JWT适合用于向Web应用传递一些非敏感信息,JWT还经常用户设计用户认证和授权系统,甚至实现web应用的单点登录。
在这里插入图片描述
在这里插入图片描述

5.使用JWT

可以直接去官网中看,与springboot的集成

5.1引入依赖

<!--引入依赖-->
<dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.8</version>
</dependency>

5.2 生成token

Calendar instance = Calendar.getInstance();
instance.add(Calendar.SECOND,99);
//生成令牌
HashMap<String,Object> map=new HashMap<>();//用于存放自定义的头部数据
Calendar instance=Calendar.getInstance().add(Calendar.SECOND.90);  //过期实际按
String token = JWT.create().withHeader(map)  //header.withClaim("username","张三")  //payload 设置自定义用户名,即只能放一个.withExpiresAT(instance.getTime()) //设置过期时间.sign(Algorithm.HMAC256("token!Q2W#SRW"));//Signature 设置签名,保密,复杂
System.out.pringln(token);

5.3 根据令牌和签名解析数据


//创建验证对象
JWTVerfier jwtVerifier = JWT.require(Algorithm.HMAC256(":Q0w#ESR")).build();
DecodeJWT verify=jwtVerifier.verify("token数据"); //解密tokenverify.getClaim("token负载中传的值").asString();  //获取解密得到token中的具体的值

6.封装工具类

//1.生成token
在这里插入图片描述

//2.验证token
在这里插入图片描述

7.springboot整合JWT

  1. 引入依赖
    jwt、数据库有关依赖、
  2. 编写配置
http://www.qdjiajiao.com/news/2644.html

相关文章:

  • 济南信息化网站外链发布的平台最好是
  • 大连企业网站建设网站建设策划书
  • 东莞网络建站公司百度投诉中心在线申诉
  • 中南集团中南建设网站我要推广网
  • 北京seo营销公司济宁seo推广
  • 自媒体135官网佛山网站优化排名推广
  • 商丘哪里做网站网站的优化从哪里进行
  • 优秀的政府网站建设提供商百度百度一下首页
  • 珠海外贸网站建设百度推荐现在为什么不能用了
  • 做网站如何购买服务器吗体验式营销经典案例
  • 专业网站建设模块浏览器打开
  • 西安专业网站建设公司互联网下的网络营销
  • 上海如何做网站学校网站模板
  • 开发软件和做网站的区别个人网页模板
  • 教育网站制作公司徐州seo排名公司
  • wordpress adsence百度seo指数查询
  • 做网站注册商标哪一类杭州网站免费制作
  • 哈尔滨网站设计报价项目营销推广方案
  • 网站seo推广seo教程上海搜索关键词排名
  • 网站建设存在的问题运营推广计划
  • 西安建筑公司网站建设南宁seo费用服务
  • 专门做兼职的网站有哪些如何做线上销售和推广
  • 拼多多网站建设过程重庆seo排名技术
  • 专业网站开发设计百度推广方式
  • 做门窗安装用哪些网站找生意快速提高排名
  • 四级a做爰片免费网站seo网站推广方案策划书
  • 可以在电脑做公务员题的网站网站运营师
  • 图书类网站开发的背景微信如何投放广告
  • 万网建设网站教程百度销售岗位怎么样
  • wordpress 默认首页重庆百度整站优化