Module: SAML2::Bindings::HTTP_POST

Defined in:
lib/saml2/bindings/http_post.rb

Constant Summary collapse

URN =
"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST".freeze

Class Method Summary collapse

Class Method Details

.decode(post_params) ⇒ Object

Raises:



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

def decode(post_params)
  base64 = post_params['SAMLRequest'] || post_params['SAMLResponse']
  raise MissingMessage unless base64

  raise MessageTooLarge if base64.bytesize > SAML2.config[:max_message_size]

  xml = begin
    Base64.decode64(base64)
  rescue ArgumentError
    raise CorruptMessage
  end

  message = Message.parse(xml)
  [message, post_params['RelayState']]
end

.encode(message, relay_state: nil) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/saml2/bindings/http_post.rb', line 25

def encode(message, relay_state: nil)
  xml = message.to_s(pretty: false)
  key = message.is_a?(Request) ? 'SAMLRequest' : 'SAMLResponse'
  post_params = { key => Base64.encode64(xml) }
  post_params['RelayState'] = relay_state if relay_state
  post_params
end