Commit e4c714d0 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Ajout de documentation

parent e5583b43
Loading
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
# CHANGELOG

6.x.x ?????????????????????????????????
-----

- Ajout de documentation

6.4.3 (29/01/2025)
------------------

@@ -57,6 +62,10 @@
- [Fix] UserContext manipule des Laminas\Permissions\Acl\Role\RoleInterface, tous les rôles ne venant pas de la BDD


## 5.0.2

- Si CAS est le seul type d'authentification alors le lien de connexion envoie directement vers le CAS sans passer par la sélection du type


## 1.0.1 (07/02/2022)

+11 −25
Original line number Diff line number Diff line
***UnicaenAuth***
---
Bibliothèque unicaen/authentification
=====================================

**CHANGES**
---
Ce module ajoute à une application la possibilité d'authentifier les utilisateurs.

**5.0.2** 
* Si CAS est le seul type d'authentification alors le lien de connexion envoie directement vers le CAS sans passer par la sélection du type
Quatre modes d'authentification sont disponibles : 
- LDAP
- base de données 
- CAS
- shibboleth

---
Ce module :
Cette bibliothèque est le résultat de l'extraction des fonctionnalités d'authentification de l'ancienne bibliothèque
[unicaen/auth](https://git.unicaen.fr/lib/unicaen/auth).

- ajoute à une application la possibilité d'identifier/authentifier l'utilisateur (LDAP, base de données ou CAS).
- fournit la possibilité à l'utilisateur de se créer un compte dans la base de données de l'application (option de config).
- fournit les fonctionnalités d'habilitation de l'utilisateur (ACL).
- Une bibliothèque de rôles éditable via une IHM
- Un système de gestion des droits avec des privilèges éditables via une IHM
- Un système d'assertions avancées pour gérer des cas complexes d'autorisations
- requiert les modules suivants :
  - UnicaenApp
  - ZfcUserDoctrineOrm
  - phpCAS
  - BjyAuthorize

## Documentation

- [Installation](./doc/installation.md)
- [Configuration](./doc/configuration.md)
- [Authentification](./doc/authentification.md)
- [Services](./doc/services.md)
- [Utilisation de la gestion des droits et privilèges](./doc/droits.md)
- [Aides de vue (view helpers)](./doc/helpers.md)
- [Authentification](doc/authentification/auth.md)
+60 −0
Original line number Diff line number Diff line
Authentification
================

La bibliothèque propose 4 modes d'authentification différents :

- [via la fédération d'identité Renater (Shibboleth)](auth_shib.md) : `shib` ;
- [via un serveur CAS (SSO)](auth_cas.md) : `cas` ;
- [auprès d'un annuaire LDAP](auth_ldap.md) : `ldap` ;
- [avec un compte local dans la BDD de l'application](auth_db.md) : `db`.

Plusieurs modes d'authentification peuvent être activés/proposés simultanément, 
exemple : "Fédération d'identité" et "Compte local dans la BDD". 

NB : Les modes `ldap` et `db` sont regroupés sous le pseudo-mode `local` du fait qu'il partage le même
formulaire de connexion.

La configuration de l'authentification se trouve sous la clé `'unicaen-auth'`.

**NB :** 
  - Le mode d'authentification `shib` est fortement recommandé pour que les personnes extérieures à votre SI mais 
    dont l'établissement fait partie de la fédération d'identité Renater puissent s'authentifier sur ESUP-SyGAL avec 
    leur compte établissement.
  - Le mode d'authentification `db` doit obligatoirement être activé pour garantir que des personnes extérieures 
    à votre SI et dont l'établissement ne faisant pas partie de la fédération d'identité Renater puissent s'authentifier 
    sur ESUP-SyGAL (ex : codirecteurs et rapporteurs étrangers).


Usurpation d'identité
---------------------

La bibliothèque permet d'usurper l'identité d'un utilisateur, autrement dit de se faire passer pour lui.

Cette fonctionnalité est intéressante lorsqu'on fait de la documentation et/ou qu'on veut valider le bon fonctionnement 
pour un rôle particulier. **Elle est bien entendu réservée à une instance de test ou de formation et pas à une instance 
de production.**

Seuls les comptes utilisateurs listés dans la configuration seront habilités à usurper une identité.

```php
    'unicaen-auth' => [
        //...
        /**
         * Identifiants de connexion des utilisateurs autorisés à faire de l'usurpation d'identité.
         * (NB: à réserver exclusivement aux instances de test/formation.)
         */
        'usurpation_allowed_usernames' => [
            'username', // format d'un compte LDAP
            'e.mail@domain.fr', // format d'un compte local (BDD) 
            'eppn@domain.fr', // format Shibboleth
        ],
    ],
```

L'usurpation d'identité est "déclenchable" de 2 façons différentes :
- bouton à cliquer : à dessiner où vous voulez grâce à l'aide de vue `userUsurpation` (cf. UserUsurpationHelper) ;
- champ de saisie d'un identifiant de connexion : disponible dans l'encart s'affichant lorsqu'on clique sur son nom 
  dans le bandeau supérieur des pages de l'application.

> NB : par définition on usurpe un compte *utilisateur* donc seules les personnes existant dans la table des utilisateurs
peuvent faire l'objet d'une usurpation d'identité.
+59 −0
Original line number Diff line number Diff line
Authentification via un serveur CAS (SSO)
=========================================

Exemple de configuration (partie SANS donnée sensible) :

```php
    'unicaen-auth' => [
        //...
        /**
         * Configuration de l'authentification centralisée (CAS).
         */
        'cas' => [
            /**
             * Ordre d'affichage du formulaire de connexion.
             */
            'order' => 1,

            /**
             * Activation ou non de ce mode d'authentification.
             */
            'enabled' => true,

            /**
             * Description facultative de ce mode d'authentification qui apparaîtra sur la page de connexion.
             */
            'description' => "Cliquez sur le bouton ci-dessous pour accéder à l'authentification centralisée.",
        ],
```

Exemple de configuration (partie AVEC donnée sensible) :

```php
    'unicaen-auth' => [
        //...
        /**
         * Configuration de l'authentification centralisée (CAS).
         */
        'cas' => [
            /**
             * Infos de connexion au serveur CAS.
             */
            'connection' => [
                'default' => [
                    'params' => [
                        'hostname' => 'host.domain.fr',
                        'port'     => 443,
                        'version'  => "2.0",
                        'uri'      => "",
                        'debug'    => false,
                    ],
                ],
            ]
        ],
```

Adaptations à faire selon votre contexte :

- Infos de connexion au serveur CAS.
  
 No newline at end of file
+35 −0
Original line number Diff line number Diff line
Authentification avec un compte local en base de données
========================================================

Ce mode d'authentification **doit** être activé.

```php
    'unicaen-auth' => [
        //...
        /**
         * Configuration de l'authentification locale (compte LDAP établissement, ou compte BDD application).
         */
        'local' => [
            /**
             * Ordre d'affichage du formulaire de connexion.
             */
            'order' => 2,

            /**
             * Description facultative de ce mode d'authentification qui apparaîtra sur la page de connexion.
             */
            'description' => "Utilisez ce formulaire si vous possédez un compte local dédié à l'application.",
            
            /**
             * Mode d'authentification à l'aide d'un compte dans la BDD de l'application.
             */
            'db' => [
                /**
                 * Activation ou non de ce mode d'authentification.
                 */
                'enabled' => true, // doit être activé 
            ],
            
            //...
        ],
```
Loading