Class JWTEncoder

java.lang.Object
tech.riemann.nif.auth.jwt.JWTEncoder

public class JWTEncoder extends Object
JWT编码器

用于生成和签名JWT(JSON Web Token)令牌

主要功能: 1. 使用指定的JWK(JSON Web Key)对JWT进行签名 2. 支持自定义主题、附加声明、有效期等参数 3. 支持生成刷新令牌(Refresh Token)

使用Nimbus JOSE+JWT库实现JWT的生成和签名

Author:
Kerbores(kerbores@riemann.tech)
  • Constructor Details

    • JWTEncoder

      public JWTEncoder()
  • Method Details

    • signer

      public com.nimbusds.jose.JWSSigner signer()
      创建JWS签名器

      使用配置的JWK创建签名器实例

      Returns:
      JWS签名器实例
      Throws:
      RuntimeException - 如果创建签名器失败
    • token

      public String token(com.nimbusds.jose.Payload payload)
      使用Payload生成token
      Parameters:
      payload - JWT荷载信息
      Returns:
      签名后的JWT字符串
    • token

      public String token(String subject, Map<String,?> claims)
      使用主题和附加声明生成token

      使用默认的有效期配置

      Parameters:
      subject - JWT主题,通常为用户标识
      claims - 附加声明信息
      Returns:
      签名后的JWT字符串
    • token

      public String token(String subject, Map<String,?> claims, long term, TimeUnit unit)
      使用主题、附加声明和自定义有效期生成token
      Parameters:
      subject - JWT主题,通常为用户标识
      claims - 附加声明信息
      term - 有效期数值
      unit - 有效期时间单位
      Returns:
      签名后的JWT字符串
    • token

      public String token(String subject)
      仅使用主题生成token

      不添加任何附加声明,使用默认有效期

      Parameters:
      subject - JWT主题,通常为用户标识
      Returns:
      签名后的JWT字符串
    • refreshToken

      public String refreshToken(String subject)
      生成刷新令牌(Refresh Token)

      刷新令牌的有效期是普通令牌的两倍 用于在普通令牌过期后,无需重新登录即可获取新的令牌

      Parameters:
      subject - JWT主题,通常为用户标识
      Returns:
      刷新令牌字符串
      Throws:
      IllegalArgumentException - 如果有效期过大导致溢出