Module: JwtUtilities

Extended by:
ActiveSupport::Concern
Included in:
Users::SessionsController
Defined in:
app/controllers/concerns/jwt_utilities.rb

Overview

Mix-in for handling JWTs

Instance Method Summary collapse

Instance Method Details

#jwt_valid?(jwt, condition_key = nil, scopes = [], attributes = []) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/controllers/concerns/jwt_utilities.rb', line 7

def jwt_valid?(jwt, condition_key = nil, scopes = [], attributes = [])
  payload = decode_jwt(jwt)
  return false unless payload

  scope_valid = scope_valid?(payload, scopes)
  nonce_valid = nonce_valid?(payload)
  condition_key_valid = condition_key_valid?(payload, condition_key)
  attributes_valid = attributes_valid?(payload, attributes)

  Rails.logger.info "scope_valid: #{scope_valid}, nonce_valid: #{nonce_valid}, condition_key_valid: #{condition_key_valid}, attributes_valid: #{attributes_valid}"

  scope_valid && nonce_valid && condition_key_valid && attributes_valid
end

#public_keyObject



21
22
23
24
25
26
27
# File 'app/controllers/concerns/jwt_utilities.rb', line 21

def public_key
  Rails.cache.fetch('jwt_utilities_public_key', expires_in: 1.day) do
    x5c_val = OpenIDConnect::Discovery::Provider::Config.discover!(ENV['IDENTITY_BASE_URL']).jwks.first['x5c'].first
    cert = OpenSSL::X509::Certificate.new(Base64.decode64(x5c_val))
    cert.public_key
  end
end