Gestion de l’identification

PPCI propose plusieurs mécanismes pour gérer l’identification des utilisateurs :

  • stockage des comptes dans la base de données (BDD)
  • identification auprès d’un serveur LDAP (LDAP)
  • identification auprès d’un serveur Common Access Service (CAS)
  • identification auprès d’un serveur OpenID Connect (OIDC)
  • identification fournie par le serveur web, pour utiliser des mécanismes Shibboleth (mode Mellon d’Apache par exemple) (HEADER)
  • des mécanismes mixtes, avec utilisation de serveurs tiers et stockage en base de données pour les comptes non gérés autrement :
    • LDAP-BDD : test de l’identification auprès de l’annuaire LDAP, et en cas d’échec, auprès de la base de données
    • CAS-BDD et OIDC-BDD : un bouton permet de sélectionner l’identification auprès du serveur considéré

En outre, les utilisateurs peuvent activer une double identification TOTP. Celle-ci est d’ailleurs obligatoire pour accéder aux modules d’administration.

À noter que l’identification LDAP est aujourd’hui considérée comme obsolète. Il vaut mieux se tourner vers des services OIDC ou CAS, quand ceux-ci sont disponibles.

Paramètres spécifiques pour chaque type d’identification

Identification en base de données

Les paramètres sont définis dans Ppci\Config\IdentificationConfig.

  • CONNECTION_max_attempts : en cas d’échec de connexion (par défaut 5), le compte sera bloqué pendant la durée spécifiée dans :
    • CONNECTION_blocking_duration (par défaut, 600 secondes). À noter que la tentative de connexion pendant cette durée réinitialise le compteur à zéro
  • APP_passwordMinLength : longueur minimum du mot de passe
  • APPLI_lostPassword : si positionné par 1 (défaut), l’utilisateur pourra demander à réinitialiser son mot de passe, sous réserve que son email soit renseigné
  • tokenIdentityValidity : durée de validité du jeton généré lors de la connexion BDD ou LDAP, pour éviter d’avoir à se réidentifier pendant la journée. Par défaut, 10 heures.

Identification LDAP

Les variables sont définies dans Ppci\Config\IdentificationConfig.LDAP.

  • address : adresse du serveur LDAP
  • port : port de connexion
  • rdn : compte de connexion pour interroger l’annuaire, si nécessaire
  • basedn : base de recherche des comptes
  • user_attrib : attribut contenant l’identifiant de l’utilisateur (uid)
  • v3 : version 3 de l’annuaire, positionné par défaut true
  • tls : mettre à true pour activer la connexion tls
  • upn_suffix : suffixe upn, nécessaire dans certains cas pour Active Directory
  • groupSupport : si positionné à true, les groupes seront récupérés depuis l’annuaire pour alimenter le module de gestion des droits
  • groupAttrib : nom de l’attribut comprenant les groupes de l’utilisateurs
  • commonNameAttrib : nom de l’attribut comprenant le nom complet de l’utilisateur
  • mailAttrib : nom de l’attribut comprenant l’email de l’utilisateur
  • attributgroupname : nom de l’attribut comprenant le nom du groupe
  • attributloginname : nom de l’attribut comprenant l’uid du membre
  • basedngroup : chemin de recherche des groupes
  • timeout : time-out de recherche dans l’annuaire (positionné à 2 secondes par défaut)
  • ldapnoanonymous : si positionné à true, l’interrogation de l’annuaire pour récupérer les groupes impose une connexion
    • ldaplogin : login de connexion
    • ldappassword : mot de passe associé

Icône pour le bouton d’identification (CAS-BDD ou OIDC-BDD)

Une icône est rajoutée sur le bouton permettant d’activer l’identification auprès du serveur CAS ou OIDC : Ppci\Config\IdentificationConfig.identificationLogo = "${FRONT_DIR}/favicon.png"

Identification auprès de serveurs dédiés (HEADER, CAS, OIDC)

Les paramètres sont définis dans Ppci\Config\IdentificationConfig.XX, où XX doit être remplacé par CAS, OIDC ou HEADER.

Paramètres généraux :

  • mail : attribut comprenant l’email
  • firstname : attribut comprenant le prénom
  • lastname : attribut comprenant le nom de famille
  • name : attribut comprenant le nom complet
  • groups : attribut comprenant les groupes d’appartenance des utilisateurs
  • getGroups : si positionné à 1 (défaut), les groupes de l’utilisateur fournis par le serveur d’identification sont traités

Paramètres spécifiques de l’identification CAS

  • address : adresse du serveur CAS, par exemple : monserveur.society.com
  • uri : dossier d’accès à l’identification. Par défaut : /cas
  • port : par défaut, 443
  • debug : si positionné à true ou 1, les traces sont stockées dans le fichier writable/logs/cas.log
  • CApath : chemin d’accès au certificat permettant de valider le serveur CAS. S’il n’est pas renseigné, le serveur CAS ne sera pas vérifié (déconseillé en production)

Identification OIDC

  • name : code du provider
  • provider : adresse web du provider (doit commencer par https://)
  • clientId : code fourni par le provider
  • clientSecret : clé secrète fournie par le provider
  • scopeGroup : nom du scope OIDC qui contient les attributs secondaires (par défaut : affectation)

Identification HEADER

  • login : nom de l’attribut de $_SERVER contenant le login, renvoyé par le serveur Apache
  • organizationGranted : tableau contenant le code ou le nom des organismes autorisés. Si ce tableau est renseigné, et si un nouvel utilisateur n’appartient pas à une des organisations indiquées (attribut organization), la création de son compte ne sera pas effectuée
  • groupsGranted : tableau contenant la liste des groupes autorisés. Si un utilisateur se connecte pour la première fois et que son groupe (ou un de ses groupes) appartient à la liste des groupes autorisés, son compte sera activé automatiquement. Dans le cas contraire, son compte sera désactivé, et un email est envoyé aux administrateurs pour les inviter à activer le compte.

Gestion de l’accès aux modules d’administration

Les paramètres sont accessibles depuis Ppci\Config\IdentificationConfig.

  • adminSessionDuration : durée pendant laquelle l’identification reste valide pour accéder aux modules d’administration. Par défaut, 10’.
  • disableTotpToAdmin : si positionné à 1, désactive la double-identification pour accéder aux modules d’administration. Ne devrait pas être utilisé en production !