Module: Legion::Extensions::Identity::Kerberos::Helpers::Resolver
- Defined in:
- lib/legion/extensions/identity/kerberos/helpers/resolver.rb
Class Method Summary collapse
-
.extract_realm(principal_str) ⇒ Object
Extracts the realm portion (after @) from a principal string, or nil.
-
.extract_username(principal_str) ⇒ Object
Extracts the username portion (before @REALM) from a principal string.
-
.principal ⇒ Object
Returns the raw Kerberos principal string (e.g. “miverso2@MS.DS.UHC.COM”) from Legion::Crypt if available, or nil.
-
.resolve_identity ⇒ Object
Returns a resolved identity hash or nil when no principal is available.
Class Method Details
.extract_realm(principal_str) ⇒ Object
Extracts the realm portion (after @) from a principal string, or nil.
29 30 31 32 |
# File 'lib/legion/extensions/identity/kerberos/helpers/resolver.rb', line 29 def extract_realm(principal_str) parts = principal_str.to_s.split('@', 2) parts.length > 1 ? parts.last : nil end |
.extract_username(principal_str) ⇒ Object
Extracts the username portion (before @REALM) from a principal string.
21 22 23 24 25 26 |
# File 'lib/legion/extensions/identity/kerberos/helpers/resolver.rb', line 21 def extract_username(principal_str) str = principal_str.to_s return str if str.empty? str.split('@', 2).first || str end |
.principal ⇒ Object
Returns the raw Kerberos principal string (e.g. “miverso2@MS.DS.UHC.COM”) from Legion::Crypt if available, or nil.
13 14 15 16 17 18 |
# File 'lib/legion/extensions/identity/kerberos/helpers/resolver.rb', line 13 def principal return nil unless defined?(Legion::Crypt) return nil unless Legion::Crypt.respond_to?(:kerberos_principal) Legion::Crypt.kerberos_principal end |
.resolve_identity ⇒ Object
Returns a resolved identity hash or nil when no principal is available.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/legion/extensions/identity/kerberos/helpers/resolver.rb', line 35 def resolve_identity raw = principal return nil if raw.nil? || raw.empty? username = extract_username(raw) realm = extract_realm(raw) canonical = username.downcase.strip.gsub(/[^a-z0-9_-]/, '') return nil if canonical.empty? { canonical_name: canonical, kind: :human, source: :kerberos, principal: raw, realm: realm, groups: [] } end |