JWT 认证方案学习

作者: phpworkerman | 来源:发表于2021-02-01 15:58 被阅读0次
定义

JWT (JSON WEB TOKEN) 是一种安全通讯标准,它定义了一种紧凑自包含的方式,用于在各方之间安全的传输 JSON 对象。常见应用场景是API之间的认证通讯。

一般的用户认证流程

1、请求方发送账户密码到服务器,验证账户可用性。
2、验证成功,生成 session,保存在服务端。
3、服务端返回一个 session ID, 保存在客户端 cookie 中。
4、客户端请求时携带 cookie。
5、服务器解析 cookie 中携带的 session ID,验证通过后返回响应数据。

以上流程核心是基于 session 进行状态管理,这样的认证方案有以下问题:

1、客户端如果禁用 cookie,将无法维持请求的身份验证状态。
2、分布式部署的环境中,需要考虑多机 session 的一致性。
3、请求会产生跨域问题。

JWT 原理

服务器和客户端之间的通讯信息完全采用 json 传递,不需要使用 session 进行状态维持。

  • JWT 的格式包含三个部分
    1、头部(Header),描述 JWT 的元数据,通常由令牌类型和加密用到签名算法组成,例如
{
  "alg": "HS256",  #加密方式
  "typ": "JWT"   #令牌类型
}

2、载荷(Payload),信息传输的主要内容,包含

  • 注册信息,包含 iss(发出者),exp(到期时间),sub(主题),aud(受众)
  • 公共信息,官方定义的其它的字段,因为 JWT 默认不是加密的,任何人都可以读取到公共信息,所以不要把敏感数据放到这里
  • 私有信息,平台间协定的私有字段
{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}

3、签名(Signature),根据头部和载荷,加盐后根据头部指定算法生成

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

头部和载荷根据算法 Base64URL 进行转换,结合签名按顺序以”.“拼接形成 JWT 。

jwt.png
JWT 的用法

当客户端根据凭证成功登陆时,服务器将返回 JWT,客户端每次访问都应该携带 JWT,可以将放入cookie,但存在跨域问题,好的解决方式是加入 HTTP 请求头 Authorization 中

Authorization: Bearer <token>
JWT 的特点

1、JWT 脱离了 session 的束缚,服务端不需要再维持 session 状态,但也无法控制 token 的状态了,JWT 一旦签发,在到期之前始终有效,除非服务器有额外的验证逻辑。
2、JWT 可以很方便的支持跨域。
3、JWT 本身包含了验证信息,如果发生泄漏,任何人都可以使用令牌的权限进行请求。
4、JWT 本身不加密,需要通过更安全的 HTTPS 协议传输。

相关文章

  • JWT 认证方案学习

    定义 JWT (JSON WEB TOKEN) 是一种安全通讯标准,它定义了一种紧凑自包含的方式,用于在各方之间安...

  • jwt介绍,以及在node和koa中的应用

    JWT JSON Web Token( JWT)是目前最流行的跨域认证解决方案。 一般的跨域认证方式 流程如下: ...

  • JWT简记

    JSON Web Token(JWT)是目前最流行的跨域认证解决方案。 跨域认证问题及传统解决方案 传统认证流程 ...

  • hapi-auth-jwt 认证插件配置

    hapi JSON Web令牌(JWT)认证插件 JSON Web令牌身份验证需要验证签名的令牌。 'jwt'方案...

  • 【javaweb】JWT的常用方法

    github.java-jwt基于JWT的token身份认证方案 1、maven库 2、设置算法 3、创建并签名t...

  • JWT简介

    前言 JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。微服务常见的认证方案 一、跨域认证...

  • jwt鉴权

    什么是JWT(Json web token): JWT是目前最流行的跨域认证解决方案。基于json的开放标准(R...

  • 【Node】使用 koa2 实现一个简单JWT鉴权

    JWT 简介 什么是 JWT 全称 JSON Web Token, 是目前最流行的跨域认证解决方案。基本的实现是服...

  • JWT简介

    一 JWT是什么 JWT是JSON Web Token的简称,是目前流行的跨域的认证解决方案,作为JSON对象在...

  • JWT认证原理分析

    基于session的认证 JWT认证规则 JWT(Json Web Token) JWT原理 签发算法 校验算法 ...

网友评论

    本文标题:JWT 认证方案学习

    本文链接:https://www.haomeiwen.com/subject/jmijtltx.html