Class: Saml::Util
- Inherits:
-
Object
- Object
- Saml::Util
- Defined in:
- lib/saml/util.rb
Class Method Summary collapse
- .parse_params(url) ⇒ Object
- .post(location, message) ⇒ Object
- .sign_xml(message, format = :xml) ⇒ Object
- .verify_xml(message, raw_body) ⇒ Object
Class Method Details
.parse_params(url) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/saml/util.rb', line 4 def parse_params(url) query = URI.parse(url).query return {} unless query params = {} query.split(/[&;]/).each do |pairs| key, value = pairs.split('=',2) params[key] = value end params end |
.post(location, message) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/saml/util.rb', line 17 def post(location, ) request = HTTPI::Request.new request.url = location request.headers['Content-Type'] = 'text/xml' request.body = request.auth.ssl.cert_file = Saml::Config.ssl_certificate_file request.auth.ssl.cert_key_file = Saml::Config.ssl_private_key_file HTTPI.post request end |
.sign_xml(message, format = :xml) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/saml/util.rb', line 29 def sign_xml(, format = :xml) .add_signature document = Xmldsig::SignedDocument.new(.send("to_#{format}")) document.sign do |data, signature_algorithm| .provider.sign(signature_algorithm, data) end end |
.verify_xml(message, raw_body) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/saml/util.rb', line 38 def verify_xml(, raw_body) document = Xmldsig::SignedDocument.new(raw_body) signature_valid = document.validate do |signature, data, signature_algorithm| .provider.verify(signature_algorithm, signature, data) end raise Saml::Errors::SignatureInvalid.new unless signature_valid .class.parse(document.signed_nodes.first.to_xml, single: true) end |