/** * @param Request $request * @return null|string */ private function processPOST(Request $request) { $post = $request->getPost(); if (array_key_exists('SAMLRequest', $post) || array_key_exists('SAMLResponse', $post)) { return Bindings::SAML2_HTTP_POST; } elseif (array_key_exists('SAMLart', $post)) { return Bindings::SAML2_HTTP_ARTIFACT; } else { if ($request->getContentType()) { $contentType = explode(';', $request->getContentType()); $contentType = $contentType[0]; /* Remove charset. */ if ($contentType === 'text/xml') { return Bindings::SAML2_SOAP; } } } return null; }
/** * @param Request $request * @return Message * @throws \AerialShip\LightSaml\Error\BindingException */ function receive(Request $request) { $post = $request->getPost(); if (array_key_exists('SAMLRequest', $post)) { $msg = $post['SAMLRequest']; } elseif (array_key_exists('SAMLResponse', $post)) { $msg = $post['SAMLResponse']; } else { throw new BindingException('Missing SAMLRequest or SAMLResponse parameter'); } $msg = base64_decode($msg); $this->dispatchReceive($msg); $doc = new \DOMDocument(); $doc->loadXML($msg); $result = Message::fromXML($doc->firstChild); if (array_key_exists('RelayState', $post)) { $result->setRelayState($post['RelayState']); } return $result; }