Commit a8751342 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Merge branch '6.x' into 'master'

[shib] Permet la déconnexion par l'idp

See merge request !3
parents 60a0918c 84429001
Loading
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -175,6 +175,11 @@ $settings = [
         */
        //'logout_url' => '/Shibboleth.sso/Logout?return=', // NB: '?return=' semble obligatoire!

        /**
         * Autorise l'IDP à gérer la déconnexion
         */
        'idp_logout' => false,

        /*
        'simulate' => [
            'eppn'        => 'login@domain.fr',
+5 −0
Original line number Diff line number Diff line
@@ -77,6 +77,11 @@ return [
             */
            'logout_url' => '/Shibboleth.sso/Logout?return=', // NB: '?return=' semble obligatoire!

            /**
             * Autorise l'IDP à gérer la déconnexion
             */
            'idp_logout' => false,

            /**
             * Simulation d'authentification d'un utilisateur.
             */
+20 −8
Original line number Diff line number Diff line
@@ -138,15 +138,25 @@ class Shib extends AbstractAdapter
    public function logout(EventInterface $e)
    {
        $storage = $this->getStorage()->read();

        if (is_array($storage)){
            if (! isset($storage['identity'])) {
                return;
            }
        }else if (!$storage instanceof SessionIdentity) {
            return;
        }

        parent::logout($e);

        // désactivation de l'usurpation d'identité éventuelle
        $this->shibService->deactivateUsurpation();

        /**
         * Si on souhaite que l'IDP Shibboleth gère la déconnexion
         * malgré qu'il puisse ne pas rediriger correctement (voir plus bas).
         */
        if ($this->moduleOptions->getShib()['idp_logout'] && $storage->getType() === 'shib') {
            // URL vers laquelle on redirige après déconnexion
            $returnUrl = $this->router->assemble([], [
                'name' => 'zfcuser/logout',
@@ -157,6 +167,8 @@ class Shib extends AbstractAdapter
            $response = new Response();
            $response->getHeaders()->addHeaderLine('Location', $shibbolethLogoutUrl);
            $response->setStatusCode(302);
            return $response;
        }

        /**
         * Problème : l'IDP Shibboleth ne redirige pas correctement vers l'URL demandée après déconnexion.