module Rails::Vault::JWT::Decoder

Public Class Methods

decode(token) click to toggle source
# File lib/rails/vault/jwt/decoder.rb, line 12
def decode(token)
  HashWithIndifferentAccess.new(::JWT.decode(
    token,
    nil,
    true,
    {
      algorithms: ['RS256', 'RS512'],
      jwks: key_provider.keys(issuer(token))
    }
  )[0])
rescue StandardError => e
  JWT.config.logger.error "Error while decoding token: #{e}"
  nil
end
issuer(token) click to toggle source
# File lib/rails/vault/jwt/decoder.rb, line 27
def issuer(token)
  parts = token.split('.')
  body = HashWithIndifferentAccess.new(JSON.parse(Base64.decode64(parts[1])))
  body[:iss]
end
key_provider() click to toggle source
# File lib/rails/vault/jwt/decoder.rb, line 33
def key_provider
  @key_provider ||= KeyProvider.new
end