Class: Onelogin::Saml::Logoutrequest

Inherits:
Object
  • Object
show all
Defined in:
lib/onelogin/saml/logout_request.rb

Instance Method Summary collapse

Instance Method Details

#create(name_id, session_index, settings) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/onelogin/saml/logout_request.rb', line 8

def create(name_id,session_index,settings)
  uuid = "_" + UUID.new.generate
  time = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")

  request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+
            "<saml2p:LogoutRequest Destination= \"#{settings.idp_slo_target_url}\" ID=\"#{uuid}\" IssueInstant=\"#{time}\" Reason=\"urn:oasis:names:tc:SAML:2.0:logout:user\" Version=\"2.0\" xmlns:saml2=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:saml2p=\"urn:oasis:names:tc:SAML:2.0:protocol\">" +
            "<saml2:Issuer>#{settings.issuer}</saml2:Issuer>" +
            "<saml2:NameID Format=\"urn:oasis:names:tc:SAML:2.0:nameid-format:transient\">#{name_id}</saml2:NameID>" +
            "<saml2p:SessionIndex>#{session_index}</saml2p:SessionIndex>" +
            "</saml2p:LogoutRequest>"
  request_params    = XMLSecurity.request_params(request)
  request_params = XMLSecurity.sign_query(request_params, settings)
  request_params << XMLSecurity.return_to(settings.return_to_url) unless settings.return_to_url.blank?
  settings.idp_slo_target_url + "?" + request_params
end