Class: Saml::Bindings::HTTPRedirect

Inherits:
Object
  • Object
show all
Defined in:
lib/saml/bindings/http_redirect.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_or_response, options = {}) ⇒ HTTPRedirect

Returns a new instance of HTTPRedirect.



40
41
42
43
44
45
# File 'lib/saml/bindings/http_redirect.rb', line 40

def initialize(request_or_response, options = {})
  @request_or_response = request_or_response
  @signature_algorithm = options[:signature_algorithm]
  @relay_state         = options[:relay_state]
  @signature           = options[:signature]
end

Instance Attribute Details

#relay_stateObject

Returns the value of attribute relay_state.



38
39
40
# File 'lib/saml/bindings/http_redirect.rb', line 38

def relay_state
  @relay_state
end

#request_or_responseObject

Returns the value of attribute request_or_response.



38
39
40
# File 'lib/saml/bindings/http_redirect.rb', line 38

def request_or_response
  @request_or_response
end

#signatureObject

Returns the value of attribute signature.



38
39
40
# File 'lib/saml/bindings/http_redirect.rb', line 38

def signature
  @signature
end

#signature_algorithmObject

Returns the value of attribute signature_algorithm.



38
39
40
# File 'lib/saml/bindings/http_redirect.rb', line 38

def signature_algorithm
  @signature_algorithm
end

Class Method Details

.create_url(request_or_response, options = {}) ⇒ Object



5
6
7
8
# File 'lib/saml/bindings/http_redirect.rb', line 5

def create_url(request_or_response, options = {})
  options[:signature_algorithm] ||= 'http://www.w3.org/2000/09/xmldsig#rsa-sha1'
  new(request_or_response, options).create_url
end

.receive_message(http_request, options = {}) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/saml/bindings/http_redirect.rb', line 10

def receive_message(http_request, options = {})
  options[:signature]           = Saml::Encoding.decode_64(http_request.params["Signature"] || "")
  options[:signature_algorithm] = http_request.params["SigAlg"]
  options[:relay_state]         = http_request.params["RelayState"]

  request_or_response = parse_request_or_response(options.delete(:type), http_request.params)

  redirect_binding = new(request_or_response, options)
  query_string     = URI.parse(http_request.url).query

  redirect_binding.verify_signature(query_string) if request_or_response.provider.authn_requests_signed?

  request_or_response
end

Instance Method Details

#create_urlObject



53
54
55
# File 'lib/saml/bindings/http_redirect.rb', line 53

def create_url
  [request_or_response.destination, signed_params].join("?")
end

#verify_signature(query) ⇒ Object



47
48
49
50
51
# File 'lib/saml/bindings/http_redirect.rb', line 47

def verify_signature(query)
  unless request_or_response.provider.verify(signature_algorithm, signature, parse_signature_params(query))
    raise Saml::Errors::SignatureInvalid.new
  end
end