/** * @param string $sp * @param string $idp * @param SpMeta $spMeta * @return LogoutRequest * @throws \InvalidArgumentException */ public static function buildLogoutRequestFromEntityDescriptors($sp, $idp, SpMeta $spMeta = null) { if (is_string($sp)) { $sp = self::getEntityDescriptorFromXmlFile($sp); } else { if (!$sp instanceof EntityDescriptor) { throw new \InvalidArgumentException('SP parameter must be instance of EntityDescriptor or string'); } } if (is_string($idp)) { $idp = self::getEntityDescriptorFromXmlFile($idp); } else { if (!$idp instanceof EntityDescriptor) { throw new \InvalidArgumentException('IDP parameter must be instance of EntityDescriptor or string'); } } if (!$spMeta) { $spMeta = new SpMeta(); $spMeta->setNameIdFormat(NameIDPolicy::PERSISTENT); } $builder = new LogoutRequestBuilder($sp, $idp, $spMeta); $result = $builder->build('urn:oasis:names:tc:SAML:2.0:nameid-format:transient', 'user', '_677952a2-7fb3-4e7a-b439-326366e677db'); return $result; }
/** * @param LogoutRequestBuilder $builder * @param ServiceInfo $serviceInfo * @param SamlSpInfo $samlInfo * @return LogoutRequest */ protected function createLogoutRequest(LogoutRequestBuilder $builder, ServiceInfo $serviceInfo, SamlSpInfo $samlInfo) { $logoutRequest = $builder->build($samlInfo->getNameID()->getValue(), $samlInfo->getNameID()->getFormat(), $samlInfo->getAuthnStatement()->getSessionIndex()); $logoutRequest->sign($serviceInfo->getSpSigningProvider()->getCertificate(), $serviceInfo->getSpSigningProvider()->getPrivateKey()); return $logoutRequest; }