getDestination() ? $message->getDestination() : $destination; $serializationContext = $context->getSerializationContext(); $message->serialize($serializationContext->getDocument(), $serializationContext); $msgStr = $serializationContext->getDocument()->saveXML(); $this->dispatchSend($msgStr); $msgStr = base64_encode($msgStr); $type = $message instanceof AbstractRequest ? 'SAMLRequest' : 'SAMLResponse'; $data = [$type => $msgStr]; if ($message->getRelayState()) { $data['RelayState'] = $message->getRelayState(); } $result = new SamlPostResponse($destination, $data); $result->renderContent(); return $result; } public function receive(Request $request, MessageContext $context) { $post = $request->request->all(); if (array_key_exists('SAMLRequest', $post)) { $msg = $post['SAMLRequest']; } elseif (array_key_exists('SAMLResponse', $post)) { $msg = $post['SAMLResponse']; } else { throw new LightSamlBindingException('Missing SAMLRequest or SAMLResponse parameter'); } $msg = base64_decode($msg); $this->dispatchReceive($msg); $deserializationContext = $context->getDeserializationContext(); $result = SamlMessage::fromXML($msg, $deserializationContext); if (array_key_exists('RelayState', $post)) { $result->setRelayState($post['RelayState']); } $context->setMessage($result); } }