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());
    }
相关文章
|
7月前
|
安全 Java Spring
Spring Security+jwt实现认证
Spring Security+jwt实现认证
|
4月前
|
SQL Java 测试技术
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
254 0
|
2月前
|
JSON 安全 数据安全/隐私保护
Python认证新风尚:OAuth遇上JWT,安全界的时尚Icon👗
【10月更文挑战第2天】在当今互联网世界中,数据安全与隐私保护日益重要。Python 作为广泛应用于 Web 开发的语言,其认证机制也不断进化。OAuth 2.0 和 JSON Web Tokens (JWT) 成为当前最热门的安全认证方案,不仅保障数据安全传输,还简化了用户认证流程。本文将介绍 Python 如何结合 OAuth 2.0 和 JWT 打造安全高效的认证体系。
41 3
|
4月前
|
存储 JSON 安全
从入门到精通:Python中的OAuth与JWT,打造无懈可击的认证体系🔒
【8月更文挑战第4天】构建现代Web和移动应用时,用户认证与授权至关重要。Python集成OAuth和JWT技术,能轻松实现安全认证。本文从OAuth基础入手,介绍如何使用`requests-oauthlib`库简化流程,再到JWT进阶应用,利用`PyJWT`库生成及验证令牌。最后,探讨如何结合两者,创建无缝认证体验。通过代码示例,由浅入深地引导读者掌握构建坚固应用认证体系的方法。
103 2
|
7月前
|
安全 数据安全/隐私保护
Springboot+Spring security +jwt认证+动态授权
Springboot+Spring security +jwt认证+动态授权
210 0
|
24天前
|
JSON 安全 数据安全/隐私保护
Python认证新风尚:OAuth遇上JWT,安全界的时尚Icon👗
在当今互联网世界中,数据安全和隐私保护至关重要。Python 作为 Web 开发的主流语言,其认证机制也在不断进步。OAuth 2.0 和 JSON Web Tokens (JWT) 是当前最热门的安全认证方案,不仅保障数据安全传输,还简化用户认证流程。本文介绍如何在 Python 中结合 OAuth 2.0 和 JWT,打造一套既安全又高效的认证体系。通过 Flask-HTTPAuth 和 PyJWT 等库,实现授权和验证功能,确保每次请求的安全性和便捷性。
36 3
|
1月前
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
|
3月前
|
安全 Java 数据安全/隐私保护
|
3月前
|
JSON 安全 数据安全/隐私保护
Python 安全性大揭秘:OAuth 与 JWT,不只是认证,更是信任的传递
【9月更文挑战第4天】在数字化时代,确保应用安全至关重要。Python 作为广泛使用的编程语言,提供了强大的安全认证工具,如 OAuth 和 JWT。OAuth 是一种授权框架,允许第三方应用在有限权限下访问用户资源;JWT 则是一种自包含的数据传输格式,用于安全地传递声明。通过合理配置和使用这些技术,可以有效提升应用安全性,保障用户数据安全。正确管理和定期更新密钥、严格测试 JWT 的生成与验证等最佳实践,对于构建安全可靠的应用至关重要。不断学习新威胁,是维护应用安全的永恒课题。
53 2
|
4月前
|
JSON 安全 数据安全/隐私保护
Python 安全性大揭秘:OAuth 与 JWT,不只是认证,更是信任的传递
【8月更文挑战第6天】在数字化时代,Python 通过 OAuth 和 JWT 筑牢应用安全防线。OAuth 是一种授权框架,允许第三方应用在用户授权下安全访问资源;JWT 则是一种自包含的声明传输格式,确保通信安全。两者结合使用,能有效进行身份验证及授权管理。然而,密钥管理和 JWT 有效期设置等仍是挑战,需谨慎处理以保障整体安全性。正确配置这些工具和技术,可为用户提供既安全又便捷的服务体验。
45 7

热门文章

最新文章