class Saml::Assertion
Attributes
xml_value[RW]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/saml/assertion.rb, line 33 def initialize(*args) options = args.extract_options! if options[:subject].present? @subject = options.delete(:subject) else @subject = Saml::Elements::Subject.new(name_id: options.delete(:name_id), name_id_format: options.delete(:name_id_format), recipient: options.delete(:recipient), in_response_to: options.delete(:in_response_to)) end @conditions = Saml::Elements::Conditions.new(audience: options.delete(:audience)) authn_instant = options.delete(:authn_instant) || Time.now @authn_statement = Saml::Elements::AuthnStatement.new(authn_instant: authn_instant, address: options.delete(:address), authn_context_class_ref: options.delete(:authn_context_class_ref), session_index: options.delete(:session_index), session_not_on_or_after: options.delete(:session_not_on_or_after)) super(*(args << options)) @_id ||= Saml.generate_id @issue_instant ||= Time.now @issuer ||= Saml.current_provider.entity_id @version ||= Saml::SAML_VERSION end
Public Instance Methods
add_attribute(key, value_or_values, value_attributes = {}, attribute_options = {})
click to toggle source
# File lib/saml/assertion.rb, line 63 def add_attribute(key, value_or_values, value_attributes = {}, attribute_options = {}) self.attribute_statement ||= Saml::Elements::AttributeStatement.new self.attribute_statement.attributes ||= [] attribute_values = case value_or_values when Saml::Elements::NameId [Saml::Elements::AttributeValue.new(value_attributes.merge(name_id: value_or_values))] else Array(value_or_values).collect do |value| Saml::Elements::AttributeValue.new(value_attributes.merge(content: value)) end end self.attribute_statement.attributes << Saml::Elements::Attribute.new( attribute_options.merge(name: key, attribute_values: attribute_values) ) end
attribute_statement()
click to toggle source
# File lib/saml/assertion.rb, line 99 def attribute_statement attribute_statements.try(:first) end
attribute_statement=(attribute_statement)
click to toggle source
# File lib/saml/assertion.rb, line 103 def attribute_statement=(attribute_statement) self.attribute_statements = [attribute_statement] end
fetch_attribute(key)
click to toggle source
# File lib/saml/assertion.rb, line 79 def fetch_attribute(key) Array(fetch_attributes(key)).first end
fetch_attribute_value(key)
click to toggle source
# File lib/saml/assertion.rb, line 89 def fetch_attribute_value(key) Array(fetch_attribute_values(key)).first end
fetch_attribute_values(key)
click to toggle source
# File lib/saml/assertion.rb, line 93 def fetch_attribute_values(key) return unless self.attribute_statements return unless self.attribute_statements.flat_map(&:attributes) attribute_statements.flat_map { |attribute_statement| attribute_statement.fetch_attribute_values(key) } end
fetch_attributes(key)
click to toggle source
# File lib/saml/assertion.rb, line 83 def fetch_attributes(key) return unless self.attribute_statements return unless self.attribute_statements.flat_map(&:attributes) attribute_statements.flat_map { |attribute_statement| attribute_statement.fetch_attributes(key) } end
provider()
click to toggle source
@return [Saml::Provider]
# File lib/saml/assertion.rb, line 59 def provider @provider ||= Saml.provider(issuer) end
Private Instance Methods
check_issue_instant()
click to toggle source
# File lib/saml/assertion.rb, line 109 def check_issue_instant errors.add(:issue_instant, :too_old) if issue_instant < Time.now - Saml::Config.max_issue_instant_offset.minutes errors.add(:issue_instant, :too_new) if issue_instant > Time.now + Saml::Config.max_issue_instant_offset.minutes end