springboot jwt单击登录

1、jwt原理

JWT(JSON Web Token)是一种用于身份验证和授权的开放标准(RFC 7519)。它是一种轻量级的令牌格式,用于在网络应用间传输声明(claims)。JWT使用JSON对象来编码声明,并使用数字签名(或加密)以确保声明的完整性和安全性。

1.1、内容:

内容包含三个部分:头部(Header)、载荷(Payload)和签名(Signature):

头部(Header):

头部通常由两部分组成:令牌的类型(typ)和使用的签名算法(alg)。常见的签名算法包括 HMAC SHA256(HS256)、RSA SHA256(RS256)等。头部会通过Base64编码后放置在JWT的第一个部分。

载荷(Payload):

载荷包含了一组声明(claims),用于携带关于用户和其他实体的信息。有三种类型的声明:

Registered Claims(注册声明):这些是预定义的声明,包含一些标准字段,如iss(签发者)、sub(主题)、exp(过期时间)、aud(受众)等。

Public Claims(公共声明):这些是自定义的声明,可以根据应用程序的需求添加任意的字段。

Private Claims(私有声明):这些是自定义的声明,用于在双方之间共享信息,但不建议在JWT中公开传输。

载荷会被Base64编码后放置在JWT的第二个部分。

签名(Signature):

签名是对头部和载荷进行签名的结果,以确保JWT的完整性和真实性。签名通常使用头部中指定的算法和密钥进行计算。签名可以防止未经授权的修改和篡改JWT。签名是JWT的第三个部分。

完整的JWT由这三个部分通过点号(.)连接而成,形如:xxxxx.yyyyy.zzzzz。

2、springBoot项目使用springSecurity框架实现单点登录demo

2.1、创建一个最基本的springBoot项目(此处略),然后引入springSecurity、redis、jwt相关依赖 <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

    </dependency>

    

<!--redis-->

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-data-redis</artifactId>

    </dependency>

    

<!--spring security-->

    <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-security</artifactId>

    </dependency>

    

<!--jwt的依赖-->

    <dependency>

        <groupId>io.jsonwebtoken</groupId>

        <artifactId>jjwt-api</artifactId>

        <version>0.11.2</version>

    </dependency>

    <dependency>

        <groupId>io.jsonwebtoken</groupId>

        <artifactId>jjwt-impl</artifactId>

        <version>0.11.2</version>

        <scope>runtime</scope>

    </dependency>

    <dependency>

        <groupId>io.jsonwebtoken</groupId>

        <artifactId>jjwt-jackson</artifactId>

        <version>0.11.2</version>

        <scope>runtime</scope>

    </dependency>

2.2、配置类及工具类代码实现

jwt工具类

 2.3、业务代码。。。。

实体类

最简单的user

2.4 测试

代码可以直接运行,跑起来以后,请求登录接口,从response中拿到headers中Key为Authorization的值,就是token

然后再请求别的接口,如代码中的test接口,和登录接口不一样,它一定要在请求头中添加上Authorization这个键值对,不然会报403异常。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值