Class: KeycloakApiRails::Service
- Inherits:
-
Object
- Object
- KeycloakApiRails::Service
- Defined in:
- lib/keycloak-api-rails/service.rb
Instance Method Summary collapse
- #decode_and_verify(token) ⇒ Object
-
#initialize(key_resolver) ⇒ Service
constructor
A new instance of Service.
- #need_middleware_authentication?(method, path, headers) ⇒ Boolean
- #read_token(uri, headers) ⇒ Object
Constructor Details
#initialize(key_resolver) ⇒ Service
Returns a new instance of Service.
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/keycloak-api-rails/service.rb', line 6 def initialize(key_resolver) configuration = KeycloakApiRails.config @key_resolver = key_resolver @skip_paths = normalize_skip_paths(configuration.skip_paths) @opt_in = configuration.opt_in @token_expiration_tolerance_in_seconds = configuration.token_expiration_tolerance_in_seconds @expected_audiences = Array(configuration.expected_audience).map(&:to_s) @expected_token_type = configuration.expected_token_type @verify_not_before = configuration.verify_not_before @allow_token_in_query_string = configuration.allow_token_in_query_string end |
Instance Method Details
#decode_and_verify(token) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/keycloak-api-rails/service.rb', line 18 def decode_and_verify(token) raise TokenError.no_token(token) if token.nil? || token.empty? public_keys = @key_resolver.find_public_keys if public_keys.nil? raise MissingPublicKeysError, "No Keycloak public key is available to verify the token" end decoded_token = decode(token, public_keys) verify_claims!(token, decoded_token) decoded_token end |
#need_middleware_authentication?(method, path, headers) ⇒ Boolean
43 44 45 |
# File 'lib/keycloak-api-rails/service.rb', line 43 def need_middleware_authentication?(method, path, headers) !is_preflight?(method, headers) && (!@opt_in && !should_skip?(method, path)) end |
#read_token(uri, headers) ⇒ Object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/keycloak-api-rails/service.rb', line 32 def read_token(uri, headers) header_token = Helper.read_token_from_headers(headers) if !header_token.empty? header_token elsif @allow_token_in_query_string Helper.read_token_from_query_string(uri).to_s else "" end end |