Commit 76e25e7e authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Merge branch 'release-3.2.1'

parents f3344ee8 4d43239a
Loading
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
CHANGELOG
=========

3.2.1
-----
- Modifications/améliorations pour faciliter le support d'autres modes d'authentification (ex: unicaen/auth-token). 
- Le type d'authentification souhaité (local, shib ou cas) peut être spécifié dans l'URL de redirection via le 
  query param 'authtype'
- Ajout de la colonne CREATED_AT dans les scripts SQL de création de la table USER (non mappée dans l'entité).  
- [FIX] Usurpation d'un compte local (db) depuis une authentification shib
- [FIX] Une chaîne vide doit être considérée comme null dans ShibService::extractShibUserIdValueForDomainFromShibData()
- [FIX] Nécessité de clés littérales dans la config par domaine de 'shib_user_id_extractor' sinon doublons lors de la 
  fusion des configs


3.2.0
-----
- Configuration de la stratégie d'extraction d'un identifiant utile parmi les données d'authentification shibboleth
+27 −11
Original line number Diff line number Diff line
<?php

namespace UnicaenAuth;

use UnicaenAuth\Authentication\Adapter\AdapterChainServiceFactory;
use UnicaenAuth\Authentication\Adapter\Cas;
use UnicaenAuth\Authentication\Adapter\CasAdapterFactory;
@@ -18,6 +20,7 @@ use UnicaenAuth\Authentication\Storage\LdapFactory;
use UnicaenAuth\Authentication\Storage\ShibFactory;
use UnicaenAuth\Authentication\Storage\Usurpation;
use UnicaenAuth\Authentication\Storage\UsurpationFactory;
use UnicaenAuth\Controller\AuthController;
use UnicaenAuth\Controller\AuthControllerFactory;
use UnicaenAuth\Controller\DroitsControllerFactory;
use UnicaenAuth\Controller\UtilisateurControllerFactory;
@@ -30,12 +33,14 @@ use UnicaenAuth\Form\ShibLoginForm;
use UnicaenAuth\Form\ShibLoginFormFactory;
use UnicaenAuth\Guard\PrivilegeControllerFactory;
use UnicaenAuth\Guard\PrivilegeRouteFactory;
use UnicaenAuth\Options\ModuleOptions;
use UnicaenAuth\ORM\Event\Listeners\HistoriqueListenerFactory;
use UnicaenAuth\Provider\Rule\PrivilegeRuleProviderFactory;
use UnicaenAuth\Service\CasService;
use UnicaenAuth\Service\CasServiceFactory;
use UnicaenAuth\Service\ShibService;
use UnicaenAuth\Service\ShibServiceFactory;
use UnicaenAuth\Service\UserContext;
use UnicaenAuth\Service\UserContextFactory;
use UnicaenAuth\Service\UserFactory;
use UnicaenAuth\Service\UserMapperFactory;
@@ -70,6 +75,15 @@ use Zend\Authentication\AuthenticationService;
use Zend\ServiceManager\Proxy\LazyServiceFactory;

$settings = [
    /**
     * Tous les types d'authentification supportés par le module unicaen/auth.
     */
    'auth_types' => [
        'local', // càd 'ldap' et 'db'
        'cas',
        'shib',
    ],

    /**
     * Configuration de l'authentification centralisée (CAS).
     */
@@ -197,19 +211,19 @@ $settings = [
            /*
            // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr')
            'unicaen.fr' => [
                [
                'supannRefId' => [
                    // nom du 1er attribut recherché
                    'name' => 'supannRefId', // ex: '{OCTOPUS:ID}1234;{ISO15693}044D1AZE7A5P80'
                    // pattern éventuel pour extraire la partie intéressante
                    'preg_match_pattern' => '|\{OCTOPUS:ID\}(\d+)|', // ex: permet d'extraire '1234'
                ],
                [
                'supannEmpId' => [
                    // nom du 2e attribut recherché, si le 1er est introuvable
                    'name' => 'supannEmpId',
                    // pas de pattern donc valeur brute utilisée
                    'preg_match_pattern' => null,
                ],
                [
                'supannEtuId' => [
                    // nom du 3e attribut recherché, si le 2e est introuvable
                    'name' => 'supannEtuId',
                ],
@@ -217,10 +231,10 @@ $settings = [
            */
            // config de repli pour tous les autres domaines
            'default' => [
                [
                'supannEmpId' => [
                    'name' => 'supannEmpId',
                ],
                [
                'supannEtuId' => [
                    'name' => 'supannEtuId',
                ],
            ],
@@ -629,21 +643,22 @@ return [
    // in /var/www/sygal/module/Application/src/Application/Controller/UtilisateurController.php on line 34
    'service_manager' => [
        'aliases'            => [
            'unicaen-auth_module_options' => ModuleOptions::class,
            'zfcuser_login_form' => LoginForm::class,
            'Zend\Authentication\AuthenticationService' => 'zfcuser_auth_service',
            'UnicaenAuth\Privilege\PrivilegeProvider'   => 'UnicaenAuth\Service\Privilege',
            '\UnicaenAuth\Guard\PrivilegeController'    => 'UnicaenAuth\Guard\PrivilegeController',

            'unicaen-auth_user_service'               => 'UnicaenAuth\Service\User', // pour la compatibilité
            'authUserContext'                         => 'UnicaenAuth\Service\UserContext', // pour la compatibilité
            'AuthUserContext'                         => 'UnicaenAuth\Service\UserContext', // pour la compatibilité
            'authUserContext'                         => UserContext::class, // pour la compatibilité
            'AuthUserContext'                         => UserContext::class, // pour la compatibilité
        ],
        'invokables'         => [
            'UnicaenAuth\View\RedirectionStrategy'    => 'UnicaenAuth\View\RedirectionStrategy',
            'UnicaenAuth\Service\CategoriePrivilege'  => 'UnicaenAuth\Service\CategoriePrivilegeService',
        ],
        'factories'          => [
            'unicaen-auth_module_options'              => 'UnicaenAuth\Options\ModuleOptionsFactory',
            ModuleOptions::class                       => 'UnicaenAuth\Options\ModuleOptionsFactory',
            'zfcuser_auth_service'                     => 'UnicaenAuth\Authentication\AuthenticationServiceFactory',
            'UnicaenAuth\Authentication\Storage\Chain' => 'UnicaenAuth\Authentication\Storage\ChainServiceFactory',
            'UnicaenAuth\Provider\Identity\Chain'      => 'UnicaenAuth\Provider\Identity\ChainServiceFactory',
@@ -659,7 +674,7 @@ return [
            'zfcuser_redirect_callback'                => 'UnicaenAuth\Authentication\RedirectCallbackFactory', // substituion
            CasService::class                          => CasServiceFactory::class,
            ShibService::class                         => ShibServiceFactory::class,
            'UnicaenAuth\Service\UserContext'          => UserContextFactory::class,
            UserContext::class                         => UserContextFactory::class,
            'zfcuser_user_mapper'                      => UserMapperFactory::class,
            'MouchardCompleterAuth'        => 'UnicaenAuth\Mouchard\MouchardCompleterAuthFactory',
            LocalAdapter::class => LocalAdapterFactory::class,
@@ -708,10 +723,11 @@ return [
    ],

    'controllers'   => [
        'invokables' => [
        'aliases' => [
            'UnicaenAuth\Controller\Auth' => AuthController::class,
        ],
        'factories' => [
            'UnicaenAuth\Controller\Auth'        => AuthControllerFactory::class,
            AuthController::class => AuthControllerFactory::class,
            'UnicaenAuth\Controller\Utilisateur' => UtilisateurControllerFactory::class,
            'UnicaenAuth\Controller\Droits'      => DroitsControllerFactory::class,
        ],
+5 −5
Original line number Diff line number Diff line
@@ -124,29 +124,29 @@ return [
            'shib_user_id_extractor' => [
                // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr')
//                'unicaen.fr' => [
//                    [
//                    'supannRefId' => [
//                        // nom du 1er attribut recherché
//                        'name' => 'supannRefId', // ex: '{OCTOPUS:ID}1234;{ISO15693}044D1AZE7A5P80'
//                        // pattern éventuel pour extraire la partie intéressante
//                        'preg_match_pattern' => '|\{OCTOPUS:ID\}(\d+)|', // ex: permet d'extraire '1234'
//                    ],
//                    [
//                    'supannEmpId' => [
//                        // nom du 2e attribut recherché
//                        'name' => 'supannEmpId',
//                        // pas de pattern donc valeur brute utilisée
//                        'preg_match_pattern' => null,
//                    ],
//                    [
//                    'supannEtuId' => [
//                        // nom du 3e attribut recherché
//                        'name' => 'supannEtuId',
//                    ],
//                ],
                // config de repli pour tous les autres domaines
                'default' => [
                    [
                    'supannEmpId' => [
                        'name' => 'supannEmpId',
                    ],
                    [
                    'supannEtuId' => [
                        'name' => 'supannEtuId',
                    ],
                ],
+2 −1
Original line number Diff line number Diff line
@@ -6,7 +6,8 @@ CREATE TABLE IF NOT EXISTS user
    display_name VARCHAR(64)  DEFAULT NULL,
    password     VARCHAR(128)                      NOT NULL,
    state        SMALLINT     default 1,
    last_role_id INTEGER      default null
    last_role_id INTEGER      default null,
    created_on   DATE         default current_date not null
);
ALTER TABLE user ADD PASSWORD_RESET_TOKEN varchar(256) DEFAULT NULL;
CREATE UNIQUE INDEX user_unique_username ON user(username);
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ CREATE TABLE user (
    password VARCHAR(128) NOT NULL,
    state SMALLINT default 1,
    last_role_id INT(11) default null,
    created_on DATE default now() not null,
  PRIMARY KEY (id),
  UNIQUE INDEX unique_username (username ASC)
) ENGINE=InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci;
Loading