JWK Set - nov/json-jwt GitHub Wiki

JSON Web Key Set (JWKs)

Encoding

JSON::JWK::Set can be initiated by putting an array of JSON::JWK instances, or Hash represented JSON Web Key Set.

JSON::JWK::Set.new(jwk1, jwk2, jwk3, ...)
JSON::JWK::Set.new([jwk1, jwk2, jwk3, ...])
JSON::JWK::Set.new(
  keys: [{
    kty: :RSA,
    e: 'AQAB',
    n: 'AK8ppaAGn6N3jDic2...'
  }, {
    :
  }]
)

To encode to JSON, call JSON::JWK::Set#to_json.

Decoding

jwks_json = JSON.parse jwks_string
JSON::JWK::Set.new jwks_json

Detecting

jwks[kid]

Fetching

# NOTE: Optionally by setting cache instance, JWKs are cached by kid.
JSON::JWK::Set::Fetcher.cache = Rails.cache

JSON::JWK::Set::Fetcher.fetch(jwks_uri, kid: kid)
# => returns JSON::JWK instance or raise JSON::JWK::Set::KidNotFound

JSON::JWK::Set::Fetcher.fetch(jwks_uri, kid: kid, auto_detect: false)
# => returns JSON::JWK::Set without JWK detection by given kid (NOTE: kid is still required for caching)