Module: Verikloak::HeaderSources
- Defined in:
- lib/verikloak/header_sources.rb
Overview
Provides normalization helpers for Rack env header keys and token priority lists.
Constant Summary collapse
- DEFAULT_FORWARDED_HEADER =
'HTTP_X_FORWARDED_ACCESS_TOKEN'- AUTHORIZATION_HEADER =
'HTTP_AUTHORIZATION'
Class Method Summary collapse
-
.default_priority(forwarded_header: DEFAULT_FORWARDED_HEADER) ⇒ Array<String>
Default priority list using the provided forwarded header name.
-
.normalize_env_key(header) ⇒ String
Normalize a Rack env header key, accepting symbols, mixed case, or dash separated names and returning an upper-case HTTP_* variant.
-
.normalize_priority(priority, forwarded_header: DEFAULT_FORWARDED_HEADER, drop_authorization: true) ⇒ Array(Array<String>, String)
Normalize a token priority list by stripping blanks, rejecting Authorization as a source, and deduplicating entries while preserving order.
Class Method Details
.default_priority(forwarded_header: DEFAULT_FORWARDED_HEADER) ⇒ Array<String>
Default priority list using the provided forwarded header name.
59 60 61 |
# File 'lib/verikloak/header_sources.rb', line 59 def default_priority(forwarded_header: DEFAULT_FORWARDED_HEADER) normalize_priority([forwarded_header], forwarded_header: forwarded_header).first end |
.normalize_env_key(header) ⇒ String
Normalize a Rack env header key, accepting symbols, mixed case, or dash separated names and returning an upper-case HTTP_* variant.
22 23 24 25 26 27 28 29 |
# File 'lib/verikloak/header_sources.rb', line 22 def normalize_env_key(header) key = header.to_s.strip return '' if key.empty? key = key.tr('-', '_').upcase key = "HTTP_#{key}" unless key.start_with?('HTTP_') key end |
.normalize_priority(priority, forwarded_header: DEFAULT_FORWARDED_HEADER, drop_authorization: true) ⇒ Array(Array<String>, String)
Normalize a token priority list by stripping blanks, rejecting Authorization as a source, and deduplicating entries while preserving order.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/verikloak/header_sources.rb', line 39 def normalize_priority(priority, forwarded_header: DEFAULT_FORWARDED_HEADER, drop_authorization: true) forwarded_env = normalize_env_key(forwarded_header) items = Array(priority).flatten normalized = items.map { |value| normalize_env_key(value) }.reject(&:empty?) normalized = [forwarded_env] if normalized.empty? normalized = normalized.reject { |key| && key == AUTHORIZATION_HEADER } deduped = [] normalized.each do |key| deduped << key unless deduped.include?(key) end [deduped.freeze, forwarded_env] end |