diff --git a/www/saml2/idp/ArtifactResolutionService.php b/www/saml2/idp/ArtifactResolutionService.php index d1bdf7cd01390f56cf453a9ebe7f2a37606cab42..ac4592d615165ec924ab3ae3ba0784288a9c991d 100644 --- a/www/saml2/idp/ArtifactResolutionService.php +++ b/www/saml2/idp/ArtifactResolutionService.php @@ -35,12 +35,19 @@ if (!($request instanceof SAML2_ArtifactResolve)) { throw new Exception('Message received on ArtifactResolutionService wasn\'t a ArtifactResolve request.'); } $artifact = $request->getArtifact(); + $responseData = $store->get('artifact', $artifact); -$document = new DOMDocument(); -$document->loadXML($responseData); -$responseXML = $document->firstChild; -$artifactResponse = new SAML2_ArtifactResponse(); +$store->delete('artifact', $artifact); + +if ($responseData !== NULL) { + $document = new DOMDocument(); + $document->loadXML($responseData); + $responseXML = $document->firstChild; +} else { + $responseXML = NULL; +} +$artifactResponse = new SAML2_ArtifactResponse(); $artifactResponse->setIssuer($idpEntityId); $artifactResponse->setInResponseTo($request->getId()); $artifactResponse->setAny($responseXML);