Jwt认证方式多种

简介: JWT全称是JSON Web Token,官网地址[直达](https://jwt.io/);

什么是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());
    }
相关文章
|
4月前
|
安全 Java Spring
Spring Security+jwt实现认证
Spring Security+jwt实现认证
|
1月前
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
|
1月前
|
存储 JSON 安全
从入门到精通:Python中的OAuth与JWT,打造无懈可击的认证体系🔒
【8月更文挑战第4天】构建现代Web和移动应用时,用户认证与授权至关重要。Python集成OAuth和JWT技术,能轻松实现安全认证。本文从OAuth基础入手,介绍如何使用`requests-oauthlib`库简化流程,再到JWT进阶应用,利用`PyJWT`库生成及验证令牌。最后,探讨如何结合两者,创建无缝认证体验。通过代码示例,由浅入深地引导读者掌握构建坚固应用认证体系的方法。
45 2
|
4月前
|
安全 数据安全/隐私保护
Springboot+Spring security +jwt认证+动态授权
Springboot+Spring security +jwt认证+动态授权
180 0
|
5天前
|
安全 Java 数据安全/隐私保护
|
15天前
|
JSON 安全 数据安全/隐私保护
Python 安全性大揭秘:OAuth 与 JWT,不只是认证,更是信任的传递
【9月更文挑战第4天】在数字化时代,确保应用安全至关重要。Python 作为广泛使用的编程语言,提供了强大的安全认证工具,如 OAuth 和 JWT。OAuth 是一种授权框架,允许第三方应用在有限权限下访问用户资源;JWT 则是一种自包含的数据传输格式,用于安全地传递声明。通过合理配置和使用这些技术,可以有效提升应用安全性,保障用户数据安全。正确管理和定期更新密钥、严格测试 JWT 的生成与验证等最佳实践,对于构建安全可靠的应用至关重要。不断学习新威胁,是维护应用安全的永恒课题。
31 2
|
1月前
|
JSON 安全 数据安全/隐私保护
Python 安全性大揭秘:OAuth 与 JWT,不只是认证,更是信任的传递
【8月更文挑战第6天】在数字化时代,Python 通过 OAuth 和 JWT 筑牢应用安全防线。OAuth 是一种授权框架,允许第三方应用在用户授权下安全访问资源;JWT 则是一种自包含的声明传输格式,确保通信安全。两者结合使用,能有效进行身份验证及授权管理。然而,密钥管理和 JWT 有效期设置等仍是挑战,需谨慎处理以保障整体安全性。正确配置这些工具和技术,可为用户提供既安全又便捷的服务体验。
31 7
|
1月前
|
JSON 安全 数据安全/隐私保护
Python安全新篇章:OAuth与JWT携手,开启认证与授权的新时代
【8月更文挑战第6天】随着互联网应用的发展,安全认证与授权变得至关重要。本文介绍OAuth与JWT两种关键技术,并展示如何结合它们构建安全系统。OAuth允许用户授权第三方应用访问特定信息,无需分享登录凭证。JWT是一种自包含的信息传输格式,用于安全地传递信息。通过OAuth认证用户并获取JWT,可以验证用户身份并保护数据安全,为用户提供可靠的身份验证体验。
33 6
|
1月前
|
JSON 人工智能 算法
Golang 搭建 WebSocket 应用(四) - jwt 认证
Golang 搭建 WebSocket 应用(四) - jwt 认证
34 0
|
1月前
|
JSON 安全 数据安全/隐私保护
Python认证新风尚:OAuth遇上JWT,安全界的时尚Icon👗
【8月更文挑战第5天】在日益重视数据安全与隐私保护的互联网时代,Python 作为一种流行的 Web 开发语言,其认证机制不断演进。OAuth 2.0 与 JSON Web Tokens (JWT) 成为两大热门安全认证方案,既能保障数据安全传输,又能简化用户认证流程。OAuth 2.0 通过角色分配(如资源拥有者、客户端等)实现授权,而 JWT 则以自我包含式令牌简化认证过程。在 Python 中,可以利用 Flask-OAuthlib 和 PyJWT 等库轻松实现这两种认证方式。
23 0