Class: Samlsso::SamlMessage

Inherits:
Object
  • Object
show all
Includes:
REXML
Defined in:
lib/samlsso/saml_message.rb

Constant Summary collapse

ASSERTION =
"urn:oasis:names:tc:SAML:2.0:assertion"
PROTOCOL =
"urn:oasis:names:tc:SAML:2.0:protocol"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.schemaObject



17
18
19
20
21
22
23
# File 'lib/samlsso/saml_message.rb', line 17

def self.schema
  @schema ||= Mutex.new.synchronize do
    Dir.chdir(File.expand_path("../../../schemas", __FILE__)) do
      ::Nokogiri::XML::Schema(File.read("saml-schema-protocol-2.0.xsd"))
    end
  end
end

Instance Method Details

#valid_saml?(document, soft = true) ⇒ Boolean



25
26
27
28
29
30
31
32
# File 'lib/samlsso/saml_message.rb', line 25

def valid_saml?(document, soft = true)
  xml = Nokogiri::XML(document.to_s)

  SamlMessage.schema.validate(xml).map do |error|
    break false if soft
    validation_error("#{error.message}\n\n#{xml.to_s}")
  end
end

#validation_error(message) ⇒ Object

Raises:



34
35
36
# File 'lib/samlsso/saml_message.rb', line 34

def validation_error(message)
  raise ValidationError.new(message)
end