Module bus.auth

Class JWTVerifier

java.lang.Object
org.miaixz.bus.auth.metric.jwt.JWTVerifier

public class JWTVerifier extends Object
JWT 数据校验器,用于验证 JWT 的算法、签名和时间字段。
  • 算法是否一致
  • 签名是否正确
  • 时间字段是否有效(如未过期、已生效等)
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • JWTVerifier

      public JWTVerifier(JWT jwt)
      构造函数,初始化验证器。
      Parameters:
      jwt - 要验证的 JWT 对象
  • Method Details

    • of

      public static JWTVerifier of(String token)
      创建 JWT 验证器,从令牌字符串初始化。
      Parameters:
      token - JWT 令牌字符串
      Returns:
      this
    • of

      public static JWTVerifier of(JWT jwt)
      创建 JWT 验证器,从现有 JWT 对象初始化。
      Parameters:
      jwt - JWT 对象
      Returns:
      this
    • verify

      public static boolean verify(String token, byte[] key)
      验证JWT Token有效性
      Parameters:
      token - JWT Token
      key - HS256(HmacSHA256)密钥
      Returns:
      是否有效
    • verify

      public static boolean verify(String token, org.miaixz.bus.auth.metric.jwt.signature.JWTSigner signer)
      验证JWT Token有效性
      Parameters:
      token - JWT Token
      signer - 签名器
      Returns:
      是否有效
    • validateAlgorithm

      public JWTVerifier validateAlgorithm() throws org.miaixz.bus.core.lang.exception.ValidateException
      验证 JWT 的算法和签名,使用 JWT 对象自带的签名器。
      Returns:
      当前 JWTVerifier 实例
      Throws:
      org.miaixz.bus.core.lang.exception.ValidateException - 如果算法不匹配或签名无效
    • validateAlgorithm

      public JWTVerifier validateAlgorithm(org.miaixz.bus.auth.metric.jwt.signature.JWTSigner signer) throws org.miaixz.bus.core.lang.exception.ValidateException
      验证 JWT 的算法和签名,使用指定的签名器。
      Parameters:
      signer - 用于验证的签名器,null 时使用 JWT 自带的签名器
      Returns:
      当前 JWTVerifier 实例
      Throws:
      org.miaixz.bus.core.lang.exception.ValidateException - 如果算法不匹配或签名无效
      IllegalArgumentException - 如果未提供签名器且 JWT 要求签名
    • validateDate

      public JWTVerifier validateDate() throws org.miaixz.bus.core.lang.exception.ValidateException
      验证 JWT 的时间字段,使用当前时间。
      • notBefore (nbf):生效时间不能晚于当前时间
      • expiresAt (exp):失效时间不能早于当前时间
      • issuedAt (iat):签发时间不能晚于当前时间
      未设置的字段不检查。
      Returns:
      当前 JWTVerifier 实例
      Throws:
      org.miaixz.bus.core.lang.exception.ValidateException - 如果时间字段无效
    • validateDate

      public JWTVerifier validateDate(Date dateToCheck) throws org.miaixz.bus.core.lang.exception.ValidateException
      验证 JWT 的时间字段,使用指定时间。
      Parameters:
      dateToCheck - 被检查的时间,通常为当前时间
      Returns:
      this
      Throws:
      org.miaixz.bus.core.lang.exception.ValidateException - 如果时间字段无效
    • validateDate

      public JWTVerifier validateDate(Date dateToCheck, long leeway) throws org.miaixz.bus.core.lang.exception.ValidateException
      验证 JWT 的时间字段,带容忍时间。
      Parameters:
      dateToCheck - 被检查的时间,通常为当前时间
      leeway - 容忍时间(秒),用于时间检查的宽松度
      Returns:
      this
      Throws:
      org.miaixz.bus.core.lang.exception.ValidateException - 如果时间字段无效