Sha256: 987fb5ae0d36212ae8d1e169e14ef6dc9552b64fa531435dbab0cb11a1f45679

Contents?: true

Size: 1.6 KB

Versions: 11

Compression:

Stored size: 1.6 KB

Contents

require 'zlib'
require 'time'
require 'nokogiri'

# Only supports SAML 2.0
module Samlsso
    class SloLogoutrequest < SamlMessage
      attr_reader :options
      attr_reader :request
      attr_reader :document

      def initialize(request, options = {})
        raise ArgumentError.new("Request cannot be nil") if request.nil?
        @options  = options
        @request = decode_raw_saml(request)
        @document = REXML::Document.new(@request)
      end

      def is_valid?
        validate
      end

      def validate!
        validate(false)
      end

      # The value of the user identifier as designated by the initialization request response
      def name_id
        @name_id ||= begin
          node = REXML::XPath.first(document, "/p:LogoutRequest/a:NameID", { "p" => PROTOCOL, "a" => ASSERTION })
          node.nil? ? nil : node.text
        end
      end

      def id
        return @id if @id
        element = REXML::XPath.first(document, "/p:LogoutRequest", {
            "p" => PROTOCOL} )
        return nil if element.nil?
        return element.attributes["ID"]
      end

      def issuer
        @issuer ||= begin
          node = REXML::XPath.first(document, "/p:LogoutRequest/a:Issuer", { "p" => PROTOCOL, "a" => ASSERTION })
          node.nil? ? nil : node.text
        end
      end

      private

      def validate(soft = true)
        valid_saml?(document, soft)  && validate_request_state(soft)
      end

      def validate_request_state(soft = true)
        if request.empty?
          return soft ? false : validation_error("Blank request")
        end
        true
      end

    end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
samlsso-1.0.0 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.9 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.8 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.7 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.6 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.5 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.4 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.3 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.2 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.1 lib/samlsso/slo_logoutrequest.rb
samlsso-0.1.0 lib/samlsso/slo_logoutrequest.rb