Skip to main content
Version: 1.0-beta

JWT

API开放平台提供了JWT(JSON Web Token)鉴权机制,旨在为API调用提供安全、高效的身份验证和权限控制。

什么是JWT鉴权?

JWT鉴权是一种基于JSON Web Token的身份验证机制。JWT是一种紧凑的、URL安全的令牌格式,用于在不同系统间安全地传输信息。JWT包含了身份验证和授权信息,通过数字签名确保其完整性和真实性。

  • JWT结构
    • Header(头部):声明类型和签名算法。
    • Payload(负载):包含用户身份和授权信息。
    • Signature(签名):用于验证令牌的真实性和完整性。

核心功能

  • 令牌生成与签发
    • 服务器在用户通过身份验证后生成JWT,包含用户的身份信息和权限。
    • 使用预先共享的密钥或私钥对JWT进行签名,确保令牌的真实性和防篡改。
  • 令牌传递与存储
    • 客户端在后续请求中通过HTTP头部(通常是Authorization头部)携带JWT进行身份验证。
    • JWT可以存储在客户端的本地存储、会话存储或Cookie中,便于跨请求携带。
  • 令牌验证与解析
    • 服务器接收到请求后,使用共享密钥或公钥验证JWT的签名。
    • 验证通过后,解析令牌获取用户的身份和权限信息,进行相应的授权操作。
  • 令牌刷新与失效
    • 支持短期有效的JWT和基于刷新令牌机制,确保令牌的安全性和及时失效。
    • 用户可以通过刷新令牌机制获取新的JWT,延长登录会话而无需重新登录。

优势

  • 无状态和分布式支持
    • JWT鉴权机制是无状态的,服务器无需存储会话信息,适合分布式系统和微服务架构。
    • 客户端每次请求都携带完整的身份信息,便于跨系统和跨服务的身份验证。
  • 高效和灵活
    • JWT格式紧凑,传输和解析效率高,适合在移动设备和带宽受限环境下使用。
    • 支持自定义Payload字段,灵活传递用户身份和权限信息,满足多样化业务需求。
  • 安全性
    • 使用数字签名确保令牌的真实性和完整性,防止篡改和伪造。
    • 支持多种签名算法(如HMAC、RSA),根据安全需求选择合适的算法。
  • 标准化和广泛支持
    • JWT是开放标准(RFC 7519),在业界广泛应用和支持,拥有丰富的开发库和工具。
    • 兼容多种编程语言和框架,易于集成和实现。

操作演示

  1. 配置鉴权时,鉴权类型选Jwt,填写鉴权信息:

字段名称说明
参数位置鉴权校验放置在请求的位置,支持Header、Query、Body
参数名称参数名称
Iss签发者
签名算法支持HS256、HS384、HS512、ES256、ES384、ES512、RS256、RS384、RS512
Secret密钥,仅在签名算法为HS256、HS384、HS512有效
RSA公钥RSA公钥,仅在算法为ES256、ES384、ES512、RS256、RS384、RS512有效
用户名用户名
用户名JsonPath用户字段在payload中的路径,格式参考json path
校验字段支持选择exp,nbf
是否Base64加密是否base64编码签名,仅在HS256、HS384、HS512有效
隐藏鉴权信息转发给上游服务时,是否隐藏用户信息

Jwt快速构造可参考 jwt生成工具

JWT鉴权示例

鉴权信息

Header

{
"alg": "HS256",
"typ": "JWT"
}

Playload

{
"sub": "1234567890",
"iss":" apinto",
"name": "John Doe",
"iat": 1516239022,
"exp": 1713339896
}

其中,用户名为John Doe,过期时间为1713339896,即2024-04-17 15:44:56,签发机构为apinto

Secret设置为apinto,如下图

Token

根据上述配置,生成Token

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiaXNzIjoiIGFwaW50byIsIm5hbWUiOiJKb2huIERvZSIsImlhdCI6MTUxNjIzOTAyMiwiZXhwIjoxNzEzMzM5ODk2fQ.IYp4hR_vTCFgOQdF3qbgOU7hrWo4W-WeFkIXdC7pqs8

配置JWT鉴权

  1. 配置鉴权时,鉴权类型选Jwt,填写鉴权信息:

配置说明

字段名称说明
参数位置鉴权校验放置在请求的位置,支持Header、Query、Body
参数名称参数名称
Iss签发者
签名算法支持HS256、HS384、HS512、ES256、ES384、ES512、RS256、RS384、RS512
Secret密钥,仅在签名算法为HS256、HS384、HS512有效
RSA公钥RSA公钥,仅在算法为ES256、ES384、ES512、RS256、RS384、RS512有效
用户名用户名
用户名JsonPath用户字段在payload中的路径,格式参考json path
校验字段支持选择exp,nbf
是否Base64加密是否base64编码签名,仅在HS256、HS384、HS512有效
隐藏鉴权信息转发给上游服务时,是否隐藏用户信息

配置完成后,点击确认即可。

调用

在请求头部输入上面生成的Token,对API进行调用