public class JWT extends Object implements RegisteredPayload<JWT>
结构:header.payload.signature
AUDIENCE, EXPIRES_AT, ISSUED_AT, ISSUER, JWT_ID, NOT_BEFORE, SUBJECT
Modifier and Type | Method and Description |
---|---|
JWT |
addHeaders(Map<String,?> headers)
增加JWT头信息
|
JWT |
addPayloads(Map<String,?> payloads)
增加JWT载荷信息
|
String |
getAlgorithm()
获取算法ID(alg)头信息
|
JWTHeader |
getHeader()
获取头
|
Object |
getHeader(String name)
获取头信息
|
JSONObject |
getHeaders()
获取所有头信息
|
JWTPayload |
getPayload()
获取载荷对象
|
Object |
getPayload(String name)
获取载荷信息
|
<T> T |
getPayload(String propertyName,
Type propertyType)
获取payload并获取类型
|
JSONObject |
getPayloads()
获取所有载荷信息
|
JWTSigner |
getSigner()
获取JWT算法签名器
|
static JWT |
of()
创建空的JWT对象
|
static JWT |
of(String token)
创建并解析JWT对象
|
JWT |
parse(String token)
解析JWT内容
|
JWT |
setCharset(Charset charset)
设置编码
|
JWT |
setHeader(String name,
Object value)
设置JWT头信息
|
JWT |
setKey(byte[] key)
设置密钥,默认算法是:HS256(HmacSHA256)
|
JWT |
setPayload(String name,
Object value)
设置JWT载荷信息
|
JWT |
setSigner(JWTSigner signer)
设置签名算法
|
JWT |
setSigner(String algorithmId,
byte[] key)
设置签名算法
|
JWT |
setSigner(String algorithmId,
Key key)
设置签名算法
|
JWT |
setSigner(String algorithmId,
KeyPair keyPair)
设置非对称签名算法
|
String |
sign()
签名生成JWT字符串
|
String |
sign(JWTSigner signer)
签名生成JWT字符串,计算方式为(以HS256为例):
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
此方法会补充如下的header:
当用户未定义"typ"时,不设置默认值
当用户未定义"alg"时,根据传入的
JWTSigner 对象类型,赋值对应ID
|
boolean |
validate(long leeway)
验证JWT是否有效,验证包括:
Token是否正确
RegisteredPayload.NOT_BEFORE :生效时间不能晚于当前时间
RegisteredPayload.EXPIRES_AT :失效时间不能早于当前时间
RegisteredPayload.ISSUED_AT : 签发时间不能晚于当前时间
|
boolean |
verify()
验证JWT Token是否有效
|
boolean |
verify(JWTSigner signer)
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
setAudience, setExpiresAt, setIssuedAt, setIssuer, setJWTId, setNotBefore, setSubject
public JWT()
public JWT(String token)
token
- JWT Token字符串,格式为xxxx.yyyy.zzzzpublic static JWT of()
public static JWT of(String token)
token
- JWT Token字符串,格式为xxxx.yyyy.zzzzpublic JWT parse(String token) throws IllegalArgumentException
token
- JWT Token字符串,格式为xxxx.yyyy.zzzz,不能为空IllegalArgumentException
- 给定字符串为空public JWT setKey(byte[] key)
key
- 密钥public JWT setSigner(String algorithmId, byte[] key)
algorithmId
- 签名算法ID,如HS256key
- 密钥public JWT setSigner(String algorithmId, Key key)
algorithmId
- 签名算法ID,如HS256key
- 密钥public JWT setSigner(String algorithmId, KeyPair keyPair)
algorithmId
- 签名算法ID,如HS256keyPair
- 密钥对public JWTSigner getSigner()
public JSONObject getHeaders()
public JWTHeader getHeader()
public String getAlgorithm()
JWTHeader.ALGORITHM
public JWT setHeader(String name, Object value)
name
- 头名value
- 头public JWT addHeaders(Map<String,?> headers)
headers
- 头信息public JSONObject getPayloads()
public JWTPayload getPayload()
public <T> T getPayload(String propertyName, Type propertyType)
T
- Bean类型propertyName
- 需要提取的属性名称propertyType
- 需要提取的属性类型ValidateException
- 传入的类型不匹配payload类型public JWT setPayload(String name, Object value)
setPayload
in interface RegisteredPayload<JWT>
name
- 载荷名value
- 头public JWT addPayloads(Map<String,?> payloads)
payloads
- 载荷信息public String sign()
public String sign(JWTSigner signer)
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
此方法会补充如下的header:
JWTSigner
对象类型,赋值对应IDsigner
- 自定义JWT签名器,非空public boolean verify()
public boolean validate(long leeway)
RegisteredPayload.NOT_BEFORE
:生效时间不能晚于当前时间RegisteredPayload.EXPIRES_AT
:失效时间不能早于当前时间RegisteredPayload.ISSUED_AT
: 签发时间不能晚于当前时间leeway
- 容忍空间,单位:秒。当不能晚于当前时间时,向后容忍;不能早于向前容忍。JWTValidator
public boolean verify(JWTSigner signer)
signer
- 签名器(签名算法),如果为null
,默认为NoneJWTSigner
Copyright © 2025. All rights reserved.