/** * @param SamlMessage $message * * @return string */ private function signAndSerialize(SamlMessage $message) { $signatureWriter = new SignatureWriter($this->getCertificate(), $this->getPrivateKey()); $message->setSignature($signatureWriter); $serializationContext = new SerializationContext(); $message->serialize($serializationContext->getDocument(), $serializationContext); $xml = $serializationContext->getDocument()->saveXML(); return $xml; }
/** * @param Request $request * @param MessageContext $context */ 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); }
/** * @param \DOMNode $node * @param DeserializationContext $context */ public function deserialize(\DOMNode $node, DeserializationContext $context) { $this->attributesFromXml($node, array('InResponseTo')); $this->singleElementsFromXml($node, $context, array('Status' => array('samlp', 'LightSaml\\Model\\Protocol\\Status'))); parent::deserialize($node, $context); }
/** * @param SamlMessage|EntityDescriptor|EntitiesDescriptor|Assertion $object */ protected function sign($object) { $object->setSignature(new SignatureWriter($this->getX509Certificate(), KeyHelper::createPrivateKey(__DIR__ . '/../../../../../resources/sample/Certificate/saml.pem', '', true))); }
/** * @dataProvider deserialize_provider */ public function test_deserialize($xml, $expectedType) { $deserializationContext = new DeserializationContext(); $samlMessage = SamlMessage::fromXML($xml, $deserializationContext); $this->assertInstanceOf($expectedType, $samlMessage); }
/** * @param string $msg * @param SamlMessage $message * @param string|null $destination * * @return string */ protected function getDestinationUrl($msg, SamlMessage $message, $destination) { $destination = $message->getDestination() ? $message->getDestination() : $destination; if (strpos($destination, '?') === false) { $destination .= '?' . $msg; } else { $destination .= '&' . $msg; } return $destination; }