Class: Saml::Bindings::HTTPRedirect
- Inherits:
-
Object
- Object
- Saml::Bindings::HTTPRedirect
- Defined in:
- lib/saml/bindings/http_redirect.rb
Instance Attribute Summary collapse
-
#relay_state ⇒ Object
Returns the value of attribute relay_state.
-
#request_or_response ⇒ Object
Returns the value of attribute request_or_response.
-
#signature ⇒ Object
Returns the value of attribute signature.
-
#signature_algorithm ⇒ Object
Returns the value of attribute signature_algorithm.
Class Method Summary collapse
- .create_url(request_or_response, options = {}) ⇒ Object
- .receive_message(http_request, options = {}) ⇒ Object
Instance Method Summary collapse
- #create_url ⇒ Object
-
#initialize(request_or_response, options = {}) ⇒ HTTPRedirect
constructor
A new instance of HTTPRedirect.
- #verify_signature(query) ⇒ Object
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, = {}) @request_or_response = request_or_response @signature_algorithm = [:signature_algorithm] @relay_state = [:relay_state] @signature = [:signature] end |
Instance Attribute Details
#relay_state ⇒ Object
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_response ⇒ Object
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 |
#signature ⇒ Object
Returns the value of attribute signature.
38 39 40 |
# File 'lib/saml/bindings/http_redirect.rb', line 38 def signature @signature end |
#signature_algorithm ⇒ Object
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, = {}) [:signature_algorithm] ||= 'http://www.w3.org/2000/09/xmldsig#rsa-sha1' new(request_or_response, ).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 (http_request, = {}) [:signature] = Saml::Encoding.decode_64(http_request.params["Signature"] || "") [:signature_algorithm] = http_request.params["SigAlg"] [:relay_state] = http_request.params["RelayState"] request_or_response = parse_request_or_response(.delete(:type), http_request.params) redirect_binding = new(request_or_response, ) 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_url ⇒ Object
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 |