sspmod_saml_Auth_Source_SP::startSLO2 PHP Méthode

startSLO2() public méthode

Start a SAML 2 logout operation.
public startSLO2 ( array &$state )
$state array The logout state.
    public function startSLO2(&$state)
    {
        assert('is_array($state)');
        assert('array_key_exists("saml:logout:IdP", $state)');
        assert('array_key_exists("saml:logout:NameID", $state)');
        assert('array_key_exists("saml:logout:SessionIndex", $state)');
        $id = SimpleSAML_Auth_State::saveState($state, 'saml:slosent');
        $idp = $state['saml:logout:IdP'];
        $nameId = $state['saml:logout:NameID'];
        $sessionIndex = $state['saml:logout:SessionIndex'];
        $idpMetadata = $this->getIdPMetadata($idp);
        $endpoint = $idpMetadata->getEndpointPrioritizedByBinding('SingleLogoutService', array(\SAML2\Constants::BINDING_HTTP_REDIRECT, \SAML2\Constants::BINDING_HTTP_POST), FALSE);
        if ($endpoint === FALSE) {
            SimpleSAML\Logger::info('No logout endpoint for IdP ' . var_export($idp, TRUE) . '.');
            return;
        }
        $lr = sspmod_saml_Message::buildLogoutRequest($this->metadata, $idpMetadata);
        $lr->setNameId($nameId);
        $lr->setSessionIndex($sessionIndex);
        $lr->setRelayState($id);
        $lr->setDestination($endpoint['Location']);
        $encryptNameId = $idpMetadata->getBoolean('nameid.encryption', NULL);
        if ($encryptNameId === NULL) {
            $encryptNameId = $this->metadata->getBoolean('nameid.encryption', FALSE);
        }
        if ($encryptNameId) {
            $lr->encryptNameId(sspmod_saml_Message::getEncryptionKey($idpMetadata));
        }
        $b = \SAML2\Binding::getBinding($endpoint['Binding']);
        $b->send($lr);
        assert('FALSE');
    }