サンプルプログラムは以下の通り。
require 'jwt'
require 'json/jwt'
require 'net/http'
require 'uri'
# JWKS URL
jwks_url = 'https://your-auth-server.com/.well-known/jwks.json'
# Fetch JWKS
uri = URI.parse(jwks_url)
response = Net::HTTP.get(uri)
jwks = JSON::JWK::Set.new(JSON.parse(response))
# JWT token
jwt_token = 'your_jwt_token_here'
# Verify and decode JWT
begin
decoded_token = JWT.decode(jwt_token, nil, true,
algorithms: ['RS256'],
jwks: ->(header) { jwks[header['kid']] })
puts "Decoded token: #{decoded_token}"
rescue JWT::DecodeError => e
puts "JWT verification failed: #{e.message}"
end