Class Jwks

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

public class Jwks extends Object
JWK(JSON Web Key)工具类

提供JWK密钥的生成、加载和管理功能

支持的密钥类型: 1. HMAC - 对称密钥,用于HS256/HS384/HS512算法 2. RSA - 非对称密钥,用于RS256/RS384/RS512/PS256/PS384/PS512算法 3. EC - 椭圆曲线密钥,用于ES256/ES256K/ES384/ES512算法 4. EdDSA - Edwards曲线密钥,用于Ed25519/Ed448算法

存储格式: - 使用标准JWKSet格式:{"keys":[{jwk对象}]} - Base64编码后存储到文件

使用示例:

// 生成RSA密钥
Jwks.gen("/path/to/keystore", JWSAlgorithm.RS256, 2048, null, "my-key-id");

// 加载密钥
JWK jwk = Jwks.load("/path/to/keystore", "my-key-id");

// 从字符串加载
JWK jwk = Jwks.loadFromString(jwkString, "my-key-id");
Author:
Kerbores(kerbores@riemann.tech)
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    com.nimbusds.jose.jwk.gen.JWKGenerator<com.nimbusds.jose.jwk.ECKey>
    ecGenerator(com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, com.nimbusds.jose.jwk.Curve curve, String keyId)
     
    com.nimbusds.jose.jwk.gen.JWKGenerator<com.nimbusds.jose.jwk.OctetKeyPair>
    eddsaGenerator(com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, com.nimbusds.jose.jwk.Curve curve, String keyId)
     
    void
    gen(String keyStorePath, com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, int length, com.nimbusds.jose.jwk.Curve curve, String keyId)
    生成密钥,以标准JWKSet格式存储到keyStorePath 存储格式: Base64编码的 {"keys":[{jwk对象}]}
    com.nimbusds.jose.jwk.gen.JWKGenerator<com.nimbusds.jose.jwk.OctetSequenceKey>
    hmacGenerator(com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, int length, String keyId)
     
    com.nimbusds.jose.jwk.JWK
    load(String keyStorePath, String kid)
    从文件加载JWKSet,根据kid查找对应的JWK 如果kid为空,返回第一个JWK 支持向后兼容: 自动识别标准JWKSet格式和旧版单个JWK格式
    com.nimbusds.jose.jwk.JWK
    loadFromString(String jwkInfo, String kid)
    从字符串加载JWKSet,根据kid查找对应的JWK 如果kid为空,返回第一个JWK 支持向后兼容: 自动识别标准JWKSet格式和旧版单个JWK格式
    com.nimbusds.jose.jwk.gen.JWKGenerator<com.nimbusds.jose.jwk.RSAKey>
    rsaGenerator(com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, int length, String keyId)
     

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Jwks

      public Jwks()
  • Method Details

    • hmacGenerator

      public com.nimbusds.jose.jwk.gen.JWKGenerator<com.nimbusds.jose.jwk.OctetSequenceKey> hmacGenerator(com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, int length, String keyId)
    • ecGenerator

      public com.nimbusds.jose.jwk.gen.JWKGenerator<com.nimbusds.jose.jwk.ECKey> ecGenerator(com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, com.nimbusds.jose.jwk.Curve curve, String keyId)
    • eddsaGenerator

      public com.nimbusds.jose.jwk.gen.JWKGenerator<com.nimbusds.jose.jwk.OctetKeyPair> eddsaGenerator(com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, com.nimbusds.jose.jwk.Curve curve, String keyId)
    • rsaGenerator

      public com.nimbusds.jose.jwk.gen.JWKGenerator<com.nimbusds.jose.jwk.RSAKey> rsaGenerator(com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, int length, String keyId)
    • gen

      public void gen(String keyStorePath, com.nimbusds.jose.JWSAlgorithm jwsAlgorithm, int length, com.nimbusds.jose.jwk.Curve curve, String keyId)
      生成密钥,以标准JWKSet格式存储到keyStorePath 存储格式: Base64编码的 {"keys":[{jwk对象}]}
      Parameters:
      keyStorePath - keyStore路径
      jwsAlgorithm - 签名算法
      length - 秘钥长度
      curve - 曲线
      keyId - key id
    • load

      public com.nimbusds.jose.jwk.JWK load(String keyStorePath, String kid)
      从文件加载JWKSet,根据kid查找对应的JWK 如果kid为空,返回第一个JWK 支持向后兼容: 自动识别标准JWKSet格式和旧版单个JWK格式
      Parameters:
      keyStorePath - JWKSet文件路径(Base64编码的标准JWKSet格式)
      kid - 密钥ID,为空时返回第一个JWK
      Returns:
      匹配的JWK对象
    • loadFromString

      public com.nimbusds.jose.jwk.JWK loadFromString(String jwkInfo, String kid)
      从字符串加载JWKSet,根据kid查找对应的JWK 如果kid为空,返回第一个JWK 支持向后兼容: 自动识别标准JWKSet格式和旧版单个JWK格式
      Parameters:
      jwkInfo - Base64编码的标准JWKSet格式字符串
      kid - 密钥ID,为空时返回第一个JWK
      Returns:
      匹配的JWK对象