Jwt认证方式多种
认证 方式 JWT 多种
2023-06-13 09:16:41 时间
什么是JWT
JWT全称是JSON Web Token,
官网地址直达;
JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Json对象传输
JWT认证的一般流程
在实际的SpringBoot项目中,一般流程大概是:
前端请求后端,获取后端生成的随机token作为JWT的payload生成JWT字符串返回给前端
前端之后每次请求都在请求头中的Authorization字段中携带JWT字符串
后端定义一个拦截器,每次收到前端请求时,取出JWT字符串并进行验证,验证通过后解析出payload中用户信息;
这里说一下 jwt认证中拦截器一般应该支持三种方式:
- 将jwt放到url参数上: 前端请求时,将jwt参数放到url上,后台过滤器从url参数上获取指定key的值,然后验证是否合法; 此方法对调用方最是友好;
下面是调用的伪代码:
Map<String,Object> map = new HashMap<>();
map.put("_jwt",token);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
// headers.set(HttpHeaders.AUTHORIZATION,"Bearer " +token);
// headers.set(HttpHeaders.COOKIE,"_jwt=" +token);
Map<String, Object> result = template.getWithUrlParam(
sphere_url +"/getinfo?_jwt={_jwt}"
,map,headers);
System.out.println(result);
- 将jwt字符串放置到cookie中:
在验证凭据放置到cookie中,然后调用时,拦截器获取cookie中的信息并验证;
此方法类似于session验证,对于老系统改造比较合适
伪代码如下:
public Map<String, Object> getWithUrlParam(String url, Map<String, Object> json,HttpHeaders headers) {
HttpEntity<?> requestEntity = new HttpEntity<>(headers);
ResponseEntity<String> exchange = this.restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class,json);
return MapUtil.readValueAsMap(exchange.getBody());
}
- 将jwt字符串放到header的Authorization中
后台拦截器从header中获取信息;
此方法最常见,主要用于前后端分离项目,已经app调用等
调用的伪代码如下:
public Map<String, Object> postWithBodyAndUrlParam(String url, Map<String, Object> json,Map<String, Object> urlParam,,HttpHeaders headers) {
HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(json, headers);
ResponseEntity<String> exchange = this.restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class,urlParam);
return MapUtil.readValueAsMap(exchange.getBody());
}
相关文章
- 谷歌、MIT「迭代共同认证」视频问答模型:SOTA性能,算力少用80%
- MongoDB安全及身份认证(实例讲解)
- 认证Linux系统下微信证书认证实现方式(linux微信证书)
- Linux 数字签名:实现安全认证(linux数字签名)
- JSP Request.getAuthType()方法:返回保护servlet的认证方案名
- 在计算无处不在的时代,双因子认证方式(2FA)可能不再安全!
- 成为Oracle数据库管理员:获取Oracle DBA认证(oracledba认证)
- Linux下安全SSH连接实现公钥认证(linux ssh 公钥)
- 方式Oracle数据库认证多样性方案(oracle几种认证)
- 拥抱更高水平获得Oracle OCP认证(ocp认证oracle)
- 从零开始搭建Redis集群并集成JWT认证(redis集群jwt)
- Redis集群实现安全认证,JWT协助其中(redis集群jwt)
- 使用Redis集群构建JWT认证体系(redis集群jwt)
- 基于Redis集群的JWT认证实现机制(redis集群jwt)
- Redis集群在实现JWT安全认证中的应用(redis集群jwt)
- 使用Redis集群实现JWT认证验证(redis集群jwt)
- 基于Redis集群实现JWT认证机制(redis集群jwt)
- 利用Redis集群搭建可靠的JWT令牌认证(redis集群jwt)
- Redis集群实现JWT认证安全(redis集群jwt)
- 实现基于Redis集群的JWT认证机制(redis集群jwt)
- Redis集群实现JWT安全认证(redis集群jwt)
- 实现更安全的网站登录基于Redis的认证方式(redis 认证登录)
- [图]Redmi 10通过NBTC认证:仅支持4G LTE网络
- 婚恋社交创业的100种方式—— AI匹配、只能女选男,或者985毕业才能来认证?