diff --git a/www/saml2/idp/ArtifactResolutionService.php b/www/saml2/idp/ArtifactResolutionService.php index c98fba2a8328c9e7aa3803d8176d070ab4f77679..5a433220e20807f2712a764344129dd1922dfd22 100644 --- a/www/saml2/idp/ArtifactResolutionService.php +++ b/www/saml2/idp/ArtifactResolutionService.php @@ -15,6 +15,7 @@ use SAML2\ArtifactResolve; use SAML2\ArtifactResponse; use SAML2\DOMDocumentFactory; use SAML2\SOAP; +use SAML2\XML\saml\Issuer; use SimpleSAML\Configuration; use SimpleSAML\Error; use SimpleSAML\Module; @@ -58,6 +59,10 @@ if (!($request instanceof ArtifactResolve)) { } $issuer = $request->getIssuer(); +if (!is_string($issuer)) { + $issuer = $issuer->getValue(); +} + $spMetadata = $metadata->getMetaDataConfig($issuer, 'saml20-sp-remote'); $artifact = $request->getArtifact(); @@ -73,7 +78,10 @@ if ($responseData !== null) { } $artifactResponse = new ArtifactResponse(); -$artifactResponse->setIssuer($idpEntityId); +$issuer = new Issuer(); +$issuer->setValue($idpEntityId); +$artifactResponse->setIssuer($issuer); + $artifactResponse->setInResponseTo($request->getId()); $artifactResponse->setAny($responseXML); Module\saml\Message::addSign($idpMetadata, $spMetadata, $artifactResponse);