Class: OmniauthOpenidFederation::Federation::MetadataPolicyMerger
- Inherits:
-
Object
- Object
- OmniauthOpenidFederation::Federation::MetadataPolicyMerger
- Defined in:
- lib/omniauth_openid_federation/federation/metadata_policy_merger.rb
Overview
Metadata Policy Merger for OpenID Federation 1.0
Merges metadata policies from Subordinate Statements in a Trust Chain and applies them to entity metadata.
Instance Method Summary collapse
-
#apply_policies(entity_metadata) ⇒ Hash
Apply merged policies to entity metadata.
-
#initialize(trust_chain:) ⇒ MetadataPolicyMerger
constructor
Initialize merger.
-
#merge_and_apply(entity_metadata) ⇒ Hash
Merge and apply policies in one step.
-
#merge_policies ⇒ Hash
Merge all metadata policies from the trust chain.
Constructor Details
#initialize(trust_chain:) ⇒ MetadataPolicyMerger
Initialize merger
25 26 27 28 |
# File 'lib/omniauth_openid_federation/federation/metadata_policy_merger.rb', line 25 def initialize(trust_chain:) @trust_chain = trust_chain @merged_policies = nil end |
Instance Method Details
#apply_policies(entity_metadata) ⇒ Hash
Apply merged policies to entity metadata
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/omniauth_openid_federation/federation/metadata_policy_merger.rb', line 63 def apply_policies() merged = merge_policies = deep_dup() # Apply policies for each entity type merged.each do |entity_type, type_policies| = [entity_type.to_sym] || [entity_type.to_s] || {} # Apply policies for each metadata parameter type_policies.each do |param_name, param_policy| apply_parameter_policy(, param_name, param_policy) end # Store back to effective metadata [entity_type.to_sym] = end # Validate final metadata against policies (, merged) end |
#merge_and_apply(entity_metadata) ⇒ Hash
Merge and apply policies in one step
91 92 93 |
# File 'lib/omniauth_openid_federation/federation/metadata_policy_merger.rb', line 91 def merge_and_apply() apply_policies() end |
#merge_policies ⇒ Hash
Merge all metadata policies from the trust chain
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/omniauth_openid_federation/federation/metadata_policy_merger.rb', line 34 def merge_policies return @merged_policies if @merged_policies @merged_policies = {} # Extract policies from Subordinate Statements (skip Entity Configurations) subordinate_statements = @trust_chain.select do |statement| parsed = statement.is_a?(Hash) ? statement : statement.parse parsed[:is_subordinate_statement] || parsed["is_subordinate_statement"] end # Merge policies from Trust Anchor down to immediate issuer # (reverse order: Trust Anchor first, then intermediates, then immediate issuer) subordinate_statements.reverse_each do |statement| parsed = statement.is_a?(Hash) ? statement : statement.parse = parsed[:metadata_policy] || parsed["metadata_policy"] next unless merge_single_policy() end @merged_policies end |