module Samlr::Tools::LogoutRequestBuilder
Use this for building the SAML logout request XML
Public Class Methods
build(options = {})
click to toggle source
# File lib/samlr/tools/logout_request_builder.rb, line 7 def self.build(options = {}) # Mandatory name_id = options.fetch(:name_id) issuer = options.fetch(:issuer) builder = Nokogiri::XML::Builder.new do |xml| xml.LogoutRequest("xmlns:samlp" => NS_MAP["samlp"], "xmlns:saml" => NS_MAP["saml"], "ID" => Samlr::Tools.uuid, "IssueInstant" => Samlr::Tools::Timestamp.stamp, "Version" => "2.0") do xml.doc.root.namespace = xml.doc.root.namespace_definitions.find { |ns| ns.prefix == "samlp" } xml["saml"].Issuer(issuer) xml["saml"].NameID(name_id, logout_options(options)) end end builder.to_xml(COMPACT) end
format_option(options)
click to toggle source
# File lib/samlr/tools/logout_request_builder.rb, line 31 def self.format_option(options) if options[:name_id_format] warn "[DEPRECATION] options[:name_id_format] is deprecated. Please use options[:name_id_options][:format] instead" options[:name_id_format] elsif options[:name_id_options] && options[:name_id_options][:format] options[:name_id_options][:format] else EMAIL_FORMAT end end
logout_options(options)
click to toggle source
# File lib/samlr/tools/logout_request_builder.rb, line 23 def self.logout_options(options) name_id_options = options[:name_id_options] || {} options = { "Format" => format_option(options) } options.merge!("NameQualifier" => name_id_options[:name_qualifier]) if name_id_options[:name_qualifier] options.merge!("SPNameQualifier" => name_id_options[:spname_qualifier]) if name_id_options[:spname_qualifier] options end