![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/litesaml/lightsaml/src/Binding/ |
<?php namespace LightSaml\Binding; use LightSaml\Context\Profile\Helper\MessageContextHelper; use LightSaml\Context\Profile\MessageContext; use LightSaml\Error\LightSamlBindingException; use LightSaml\Model\Protocol\AbstractRequest; use LightSaml\Model\Protocol\SamlMessage; use Symfony\Component\HttpFoundation\Request; class HttpPostBinding extends AbstractBinding { /** * @param string|null $destination * * @return SamlPostResponse */ public function send(MessageContext $context, $destination = null) { $message = MessageContextHelper::asSamlMessage($context); $destination = $message->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); } }