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, waitsetAudience, setExpiresAt, setIssuedAt, setIssuer, setJWTId, setNotBefore, setSubjectpublic 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.ALGORITHMpublic 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 - 容忍空间,单位:秒。当不能晚于当前时间时,向后容忍;不能早于向前容忍。JWTValidatorpublic boolean verify(JWTSigner signer)
signer - 签名器(签名算法),如果为null,默认为NoneJWTSignerCopyright © 2025. All rights reserved.