企业开发.JWT

什么是JWT

token 认证,前后端分离的保护机制,前后端的信息传递,接收方是要验证,有数字签名的,以JSON 的形式建立令牌。

数字签名算法

ECDSA ,HMAC

使用场景

系统之间的传递数据,数字的签名和加密,信息交换,javaweb安全验证。

单点登录的系统,开销很小,完成跨域。

传统的session验证

信息交换,session 存储信息,http协议无状态,给协议记录状态,每个用户都有自己的session 保存在内存中。

限制了分布能力 ,集群架构受到限制。

解耦后,增加部署复杂型,前端服务nginx,路由网关,代理层网关。

作用

拦截漏洞(伪造攻击),前后端分离。

解决session 内存问题

令牌保存浏览器端,携带令牌,系统中合法令牌。整个格式处理完后。

自包含,分布式微服务,解决session 内存的占用问题,json令牌。后端验证。

构成

三段组成

标头,Payload ,singnature 。

alg HS256, base64的编码。

{

"alg":"HS256".

"typ":"JWT"

}

PAYLOAD

{

"SUB":"1234567890",

"NAME":"John Doe",

"admin": true

}

信息安全

敏感信息泄露,原密码修改。

Payload不要放密码等敏感信息。

非敏感信息,认证授权

spring的应用

1、引入依赖

libraries-io

JWT

withClaim , sign

asInt()

先验证签,解码,过期时间,过期payload,

声明异常

2、生成令牌,验证令牌,

生产环境,

map.forEach((k,v)->{

}

);

3、创建过期时间,

4、创建jwt builder

5、payload 遍历

withEXpiresAt(instance.getTime())

.sign(Algorithm.HMAC256(sign))

return token;

/验证token

JWT.require(Algorithm.HMAC256(sign).build

.verify(token))



springboot整合JWT使用

一、

1、数据库用户认证 db

2、mybaits lombok mysql

3、配置文件,数据类型,jwt,

4、写实体,dao接口,登录接口,service接口

5、业务层实现,注入DAO

6、控制器,加日志,接收name,password.

User user。getName()

7、热部署

e.printStackTrace();

e.printStackTrace();

e.printStackTrace();

二、

拦截器,网关

JWTInterceptor implements HandlerInterceptor

配置,webmvcConfigurer

AOP+注解+拦截器

基于客户端管理

localstore sessionstore

}

你可能感兴趣的:(java,开发语言)