Les 3 sources suivantes sont sollicitées successivement jusqu'à ce que l'une d'entre elles valide l'authentification de l'utilisateur.
Quatre types d'authentification sont activables dans la configuration du module.
1/ Annuaire LDAP
1/ Authentification via la fédération d'identité Renater (Shibboleth)
- La connexion à l'annuaire LDAP est requise pour authentifier (ldap_bind) et récupérer les infos concernant l'utilisateur (cf. configuration du module UnicaenApp).
- Il est possible d'enregistrer systématiquement l'utilisateur authentifié dans la base de données de l'application.
- Ce type d'authentification requiert l'installation d'un module Shibboleth sur le serveur d'application, configuré
pour se déclencher sur l'URL `/auth/shibboleth`, exemple : `https://sygal.univ.fr/auth/shibboleth`.
- Clé de configuration `shib`.
2/ Table des utilisateurs
2/ Avec un compte local établissement (LDAP)
- La connexion à un annuaire LDAP est requise pour authentifier et récupérer les infos concernant l'utilisateur
(cf. configuration du module unicaen/app ou unicaen/ldap).
- Clé de configuration `ldap`.
3/ Avec un compte local propre à l'appli (DB)
- Il peut arriver qu'une appli ait besoin d'authentifier des personnes n'existant pas dans l'annuaire LDAP.
- Pour donner accès à l'application à un nouvel utilisateur, 2 solutions :
- Un informaticien crée à la main l'utilisateur dans la table des utilisateurs ; le mot de passe doit être chiffré avec “Bcrypt”
(exemple en ligne de commande à la racine de votre projet : `php --run 'require "vendor/autoload.php"; $bcrypt = new Zend\Crypt\Password\Bcrypt(); var_dump($bcrypt->create("azerty"));'`).
- Si la fonctionnalité est activée (fournie par le module "zf-commons/zfc-user" dont dépend le module UnicaenAuth), l'utilisateur s'enregistre lui-même dans la table des utilisateurs via un formulaire de l'application (le lien figure sous le formulaire de connexion à l'appli).
- Un informaticien crée à la main l'utilisateur dans la table des utilisateurs ; le mot de passe doit être chiffré
avec “Bcrypt” (exemple en ligne de commande à la racine de votre projet :
`php --run 'require "vendor/autoload.php"; $bcrypt = new Zend\Crypt\Password\Bcrypt(); var_dump($bcrypt->create("azerty"));'`).
- Si la fonctionnalité est activée (fournie par le module "zf-commons/zfc-user" dont dépend le module unicaen/auth),
l'utilisateur s'enregistre lui-même dans la table des utilisateurs via un formulaire de l'application (le lien figure
sous le formulaire de connexion à l'appli).
- Clé de configuration `db`.
3/ Serveur CAS
4/ Via un serveur d'authentification centralisée (CAS)
- L'authentification est déléguée au serveur CAS grâce au module jasig/phpcas (bibliothèque phpCAS).
- NB: La connexion à l'annuaire LDAP est tout de même requise pour récupérer les infos concernant l'utilisateur (cf. configuration du module UnicaenApp).
- NB: La connexion à l'annuaire LDAP est tout de même requise pour récupérer les infos concernant l'utilisateur
(cf. configuration du module unicaen/app).
- Clé de config `cas`.
## Événement UserAuthenticatedEvent
Si vous avez activé l'enregistrement automatique de l'utilisateur authentifié dans la base de données de votre application, la classe abstraite UnicaenAuth\Event\Listener\AuthenticatedUserSavedAbstractListener peut vous intéresser.
Si vous avez activé l'enregistrement automatique de l'utilisateur authentifié dans la base de données de votre
application, la classe abstraite UnicaenAuth\Event\Listener\AuthenticatedUserSavedAbstractListener peut vous intéresser.
Elle vous procure un moyen de “faire quelque chose” juste avant que l'entité utilisateur (fraîchement authentifié via LDAP) ne soit persistée. L'idée est d'écouter un événement particulier déclenché lors du processus d'authentification de l'utilisateur.
Elle vous procure un moyen de “faire quelque chose” juste avant que l'entité utilisateur (fraîchement authentifié
via LDAP) ne soit persistée. L'idée est d'écouter un événement particulier déclenché lors du processus d'authentification de l'utilisateur.
*Attention! Cet événement est déclenché par l'authentification LDAP, mais pas par l'authentification à partir d'une table locale en base de données.*
*Attention! Cet événement est déclenché par l'authentification LDAP, mais pas par l'authentification à partir d'une
table locale en base de données.*
*Si vous avez mis en place (en plus ou à la place de l'authentification LDAP) une authentification à partir d'une table locale, écoutez plutôt l'événement authentication.success déclenché par le module ZfcUser une fois que l'authentification a réussi. Exemple :*
*Si vous avez mis en place (en plus ou à la place de l'authentification LDAP) une authentification à partir d'une
table locale, écoutez plutôt l'événement authentication.success déclenché par le module ZfcUser une fois que l'authentification a réussi. Exemple :*