class Warden::Cognito::JwkLoader

Public Instance Methods

call(options) click to toggle source
# File lib/warden/cognito/jwk_loader.rb, line 19
def call(options)
  return { keys: [jwk.key.export] } if jwk.key.present?

  cache.delete(jwk_url) if options[:invalidate]

  cache.fetch(jwk_url, expires_in: 1.hour) do
    JSON.parse(HTTP.get(jwk_url).body.to_s).deep_symbolize_keys
  end
end
issued?(token) click to toggle source
# File lib/warden/cognito/jwk_loader.rb, line 13
def issued?(token)
  ::JWT.decode(token, nil, false).first['iss'] == jwt_issuer
rescue StandardError
  false
end
jwt_issuer() click to toggle source
# File lib/warden/cognito/jwk_loader.rb, line 7
def jwt_issuer
  return "#{user_pool.identifier}-#{jwk.issuer}" if jwk.issuer.present?

  "https://cognito-idp.#{user_pool.region}.amazonaws.com/#{user_pool.pool_id}"
end

Private Instance Methods

jwk_url() click to toggle source
# File lib/warden/cognito/jwk_loader.rb, line 31
def jwk_url
  "#{jwt_issuer}/.well-known/jwks.json"
end