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
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_key ⇒ Object
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 |