Class: Cassette::Rubycas::SingleSignOutConstraint

Inherits:
Object
  • Object
show all
Defined in:
lib/cassette/rubycas/single_sign_out_constraint.rb

Direct Known Subclasses

NotSingleSignOutConstraint

Constant Summary collapse

LOGOUT_PAYLOAD_EXPR =
%r{<samlp:LogoutRequest.*?<samlp:SessionIndex>(.*)<\/samlp:SessionIndex}m

Instance Method Summary collapse

Instance Method Details

#logout_request?(params) ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/cassette/rubycas/single_sign_out_constraint.rb', line 8

def logout_request?(params)
  [params['logoutRequest'], URI.unescape(params['logoutRequest'])].find { |xml| xml =~ LOGOUT_PAYLOAD_EXPR }
end

#matches?(request) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/cassette/rubycas/single_sign_out_constraint.rb', line 12

def matches?(request)
  if (content_type = request.headers['CONTENT_TYPE']) && content_type =~ %r{^multipart/}
    return false
  end

  if request.post? && request.request_parameters['logoutRequest'] && logout_request?(request.request_parameters)
    Cassette.logger.debug "Intercepted a single sign out request on #{request}"
    return true
  end

  false
end