JWT解决什么问题

JWT(JsonWebToken)是一种符合开放标准的站点通行证,用于解决HTTP协议无状态带来的用户认证问题。相对于基于Session的认证方式,JWT允许用户认证信息无需保存在服务端,从而减轻服务器内存负担并支持分布式系统的扩展,实现单点登录功能。其认证流程包括用户首次认证获取Token,之后携带Token进行请求,服务端验证Token有效性。

JWT解决分布式系统单点登录的问题

一、JWT是什么?

Json Web Token的首字母简写,符合JSON开放标准的站点通行证。

我们知道http请求协议是无状态的,意味着客户端用户每次请求时,必须带上用户身份信息,否则服务端不知道是谁发出的请求。

二、基于Session认证的局限性

1.session通常都是保存在服务端内存中,随着认证用户越来越多,服务端内存的开销明显增大,响应的性能下降。

2.因用户首次认证的信息保存在服务器内存中,用户再次请求时只能在原来的服务器上认证,这样就限制了多服务器负载均衡的能力,也就限制了分布式系统的扩展能力。

三、基于JWT认证的好处

用户的认证信息无需保留在服务端,意味着无需考虑用户登录了哪台服务器,这就为分布式应用系统的扩展提供了便利,同时也满足了单点登录的应用场景。

四、Token认证的流程如下

1.客户端用户首次认证时发送账号和密码到服务端;

2.服务端验证成功之后生成加密的token,并返回客户端保留;

3.客户端再次请求时需带上token,服务器校验;

4.服务端校验成功之后返回客户端请求的数据。

 

### JSON Web Token (JWT) 的定义 JSON Web Token(JWT)是一种开放标准(RFC 7519),旨在作为各方之间安全传输信息的手段。此信息可以被验证和信任,因为它是数字签名的。JWT可以在URL、POST参数或者HTTP头部中发送,并且由于其紧凑性和可预测的存在形式,在互联网应用环境中特别有用[^2]。 #### JWT结构解析 JWT由三部分组成:Header(头部), Payload(载荷), 和 Signature(签名)[^3]: - **Header**: 包含两部分内容——令牌类型(`typ`)设为`JWT`,以及所使用的签名算法(`alg`),如HMAC SHA256 或 RSA。 - **Payload**: 载荷包含了声明,即要传达的数据。这些数据不是保密的;因此不应在此处放置敏感信息除非先对其进行加密处理。 - **Signature**: 签名用于验证消息在途中未被更改,并确认发出者确实拥有对应的私钥或共享密钥。 这三部分通过`.`连接形成最终的JWT字符串表示法。 ### JWT的主要用途 JWT广泛应用于多种场景之中,主要包括但不限于以下几个方面: - **API的身份验证**:当用户登录成功后,服务器会返回一个JWT给客户端保存起来。之后每次请求时都携带这个token让服务端能够识别并授权访问资源。 - **跨域资源共享(CORS)**:由于浏览器同源策略限制,传统session-based机制难以实现不同域名下的单点登录(SSO)功能。而基于stateless特性的JWT则非常适合解决此类问题。 - **分布式系统的认证与授权**:对于微服务架构而言,各个子系统间相互调用频繁,利用JWT可以简化权限校验流程,提高效率的同时也增强了安全性。 ```python import jwt secret_key = "your_secret" payload_data = {"sub": "1234567890", "name": "John Doe"} encoded_jwt = jwt.encode(payload=payload_data, key=secret_key, algorithm='HS256') print(encoded_jwt) decoded_jwt = jwt.decode(jwt=encoded_jwt, key=secret_key, algorithms=['HS256']) print(decoded_jwt) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿花粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值