JWT 实现 token 认证

目录

一 什么是 JWT

二 JWT 适用场景

2.1 认证

2.2 信息交换

三 几种认证方式

3.1 session 认证

3.2 token 认证

四 JWT 的数据结构

4.1 header

4.2 playload

4.3 signature

4.4 总结

五 JWT 的使用方式

六 JWT的优点

七 JWT的使用注意

八 JWT 等待解决的问题

九 参考文档


一 什么是 JWT

       JSON Web Token(JWT)是一个开发标准(RFC 7519),它定义了一种紧凑独立的基于 JSON 对象在各方之间安全地传输信息的方式。这些信息可以被验证和信任,因为它是数字签名的。JWTs 可以使用一个密钥(HMAC算法),或使用 RSA 的公钥/私钥密钥对对信息进行签名。

  • 紧凑

      由于其较小的体积,JWTs 可以通过 URL、POST 参数或 HTTP 头部参数进行传递,体积小也意味着其传输速度会相当快。

  • 独立

      有效负载包含了所需要的关于用户的所有信息,避免了多次查询数据库的需要。

二 JWT 适用场景

2.1 认证

       用户一旦登录,之后的每一个请求都会带上这个 JWT ,用来访问该 token 权限下的路由,服务和资源。由于 JWT 的开销小,能解决跨域问题等特点,被广泛的应用于 SSO。

2.2 信息交换

       JSON Web 能给在客户端和服务端之间安全地传输信息。 通过使用非对称加密签名技术,可以对客户端进行签名验签。此外,可以使用标头和有效负载计算签名,您还可以验证内容是否未被篡改。

三 几种认证方式

3.1 session 认证

1、客户端向服务端发送用户名和密码进行登录操作。

2、服务端验证通过后,保存当前对话(session)的相关数据,比如用户角色、登录时间等等。

3、服务端返回一个 session_id 给客户端,客户端将得到的这个 id 写入 Cookie。

4、客户端之后的每一次请求,都会通过 Cookie,将 session_id 传回服务端。

5、服务端收到 session_id,找到前期保存的数据,由此得知客户端的身份。

缺点:扩展性(scaling)不好,单机容易实现,如果是集群或者是跨域的服务架构,需要 session 数据共享。一旦 session 持久层宕机,会出现单点失败问题。

3.2 token 认证

1. 客户端使用用户名密码来请求服务端

2. 服务端进行验证用户的信息

3. 服务端通过验证下发给客户端一个 token

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值