Guide d'intégration

NetworkUser 1.3

Anakeen Labs <labs@anakeen.com>

Table des matières

Chapitre 1 Introduction

Le module utilisateurs réseau permet à Dynacase d'utiliser un serveur LDAP déjà existant comme base d'authentification et comme référence pour les propriétés des utilisateurs (login, nom, prénom, téléphone, mail, etc.) et des groupes d'appartenance. Lorsque les utilisateurs et les groupes proviennent d'un serveur LDAP, on les nomme utilisateurs réseau et groupes réseau. Lorsqu'ils sont déclarés localement, on les nomme utilisateurs locaux et groupes locaux.

À l'installation de Dynacase, 2 utilisateurs et 2 groupes locaux sont crées :

Ces utilisateurs et groupes ne doivent pas être supprimés. Ils servent de référence lors de l'installation d'applications afin de définir les droits par défaut pour les utilisateurs et les administrateurs.

L'utilisateur admin ne peut pas être supprimé. Il est toujours local (le rôle de super utilisateur est indépendant du système d'authentification tiers).

Ce module supporte deux types de serveurs LDAP : LDAP Posix ou Active Directory. Dynacase utilise une table de translation pré-configurée pour importer certaines valeurs du LDAP dans les attributs des utilisateurs ou groupes réseaux.

La création des utilisateurs réseaux peut se faire de trois manières.

création à la volée
l'utilisateur réseau est créé dans Dynacase lors de sa première connexion à Dynacase (voir Paramétrage provider freedomNu).
création unitaire manuelle
l'administrateur doit créer dans Dynacase l'utilisateur réseau avant sa connexion (voir ci-dessous).
création multiple par import
l'ensemble des utilisateurs (correspondants au paramétrage défini) sont créés par l'administrateur en utilisant une commande d'import spécifique (voir Importation d'un LDAP existant).

L'installation du module crée deux nouvelles familles de documents : Utilisateur réseaux (nom logique LDAPUSER) et Groupe réseaux (nom logique LDAPGROUP). Ces documents vont recevoir les informations issues du LDAP. Via Dynacase il n'est pas possible de modifier les informations provenant du LDAP.

L'administrateur peut créer des utilisateurs réseaux. Cela consiste à rechercher un utilisateur dans le LDAP puis le créer dans Dynacase.

Création d'un LDAPUSER

Figure 1. Création d'un LDAPUSER

La création donne l'utilisateur suivant. Les groupes d'appartenance de l'utilisateur sont créés automatiquement lorsqu'un utilisateur est créé ou mis à jour, conformément au paramétrage applicatif défini.

Consultation d'un LDAPUSER

Figure 2. Consultation d'un LDAPUSER

Consultation d'un LDAPGROUP

Figure 3. Consultation d'un LDAPGROUP

Chapitre 2 Configuration et paramétrage

2.1 Configuration Dynacase

Afin de créer les comptes au LDAP équivalent dans Dynacase, il est nécessaire de renseigner les paramètres suivants :

Paramètres applicatifs

Figure 4. Paramètres applicatifs

2.1.1 Liste des paramètres

NU_LDAP_HOST
Adresse du serveur LDAP (défaut vide).
NU_LDAP_PORT
Port du serveur LDAP (défaut vide).
NU_LDAP_MODE

Mode de connexion au serveur LDAP plain, ssl ou tls (défaut plain) :

  • plain : effectue une connexion non-chiffrée ;
  • ssl : effectue une connexion sécurisée par SSL (généralement sur le port 636) ;
  • tls : effectue une connexion sécurisée par TLS (généralement sur le port standard 389).
NU_LDAP_BINDDN
DN de l'utilisateur pouvant accéder au LDAP : laisser vide si LDAP autorise de parcourir et rechercher les utilisateurs en anonyme (défaut vide).
NU_LDAP_PASSWORD
Mot de passe du DN NU_LDAP_BINDDN : laisser vide si bind anonyme (défaut vide).
NU_LDAP_KIND
Type de serveur LDAP : AD (Active Directory), POSIX (Unix/Posix) ou INET (Générique inetOrgPerson).
NU_LDAP_GROUP_BASE_DN
Racine de la base des groupes. Si vide, l'import des groupes de l'utilisateur ne sera pas effectué (défaut vide).
NU_LDAP_GROUP_FILTER
Filtre LDAP pour la recherche des groupes dans la racine des groupes (défaut vide).
NU_LDAP_USER_BASE_DN
Racine de la base des utilisateurs.
NU_LDAP_USER_FILTER
Filtre LDAP pour la recherche des utilisateurs dans la racine des utilisateurs (défaut vide).

2.1.1.1 Exemple de paramètres

2.1.1.2 Notes

2.2 Configuration provider freedomNu

2.2.1 Activation

Pour utiliser Dynacase NetworkUser comme fournisseur d'authentification de Dynacase, il faut déclarer celui-ci dans la variable $freedom_authprovider.

Pour cela, il vous faut éditer le fichier config/local-dbaccess.php et ajouter freedomNu dans $freedom_authprovider :

<?php
 
 $freedom_authprovider = "freedomNu";

2.2.2 Paramétrage

Les paramètres du provider freedomNu sont :

allowAutoFreedomUserCreation
yes pour activer la création des utilisateurs à la volée (défaut no).
fix_euro
yes pour convertir le symbole dans le jeu de caractère WINDOWS-1252 (à utiliser principalement pour l'authentification de type HTTP Basic avec des navigateurs sous environnement Microsoft Windows)(défaut no).
convert_to_utf8
yes pour forcer la conversion du mot de passe du jeu de caractère WINDOWS-1252 vers le jeu de caractère UTF-8 (à utiliser principalement pour l'authentification de type HTTP Basic avec des navigateurs sous environnement Microsoft Windows)(défaut no).
options
array() pour spécifier un ensemble d'options LDAP (voir man ldap_set_option).)

Exemple :

<?php
 
$freedom_authprovider = "freedomNu";
 
$freedom_providers['freedomNu'] = array(
    'allowAutoFreedomUserCreation' => 'no',
    'fix_euro' => 'no',
    'convert_to_utf8' => 'no',
    'options' => array(
        LDAP_OPT_REFERRALS => 0
    )
);

Chapitre 3 Exploitation

3.1 Importation d'un LDAP existant

3.1.1 LDAP Posix

La commande ./wsh.php --api=nu_importldap permet d'importer les utilisateurs et les groupes d'un serveur LDAP de type Posix conformément au paramétrage applicatif définit.

Utilisation :

$ ./wsh.php --api=nu_importldap

Options :

--onlygroups=Y|N
Permet de n’importer que les groupes et pas les utilisateurs (défaut N).

3.1.2 LDAP Active Directory

La commande ./wsh.php --api=nu_importldap_ad permet d'importer les utilisateurs et les groupes d'un serveur LDAP de type Active Directory conformément au paramétrage défini.

Utilisation :

$ ./wsh.php --api=nu_importldap_ad

Options :

--onlygroups=Y|N
Permet de n'importer que les groupes et pas les utilisateurs (défaut N).
--verbose=Y|N
Augmente le niveau de verbosité (défaut N).
--dryrun=Y|N
Décrit les opérations qui auraient été effectués sans importer ni modifier aucun utilisateur ou groupe Dynacase (i.e. mode de test)(défaut N).

3.2 Rafraîchissement par rapport au LDAP

Deux commandes wsh permettent de mettre à jour les utilisateurs et groupes réseaux à partir des données du LDAP.

$ ./wsh.php --api=refreshDocuments --famid=LDAPUSER --method=refreshFromLDAP
$ ./wsh.php --api=refreshDocuments --famid=LDAPGROUP --method=refreshFromLDAP

Exemple :

$ ./wsh.php --api=refreshDocuments --famid=LDAPGROUP --method=refreshFromLDAP
  7 documents to refresh
  using refreshFromLDAP method
  7)propriétaires créateurs de la stratégie de groupe (use refreshFromLDAP)Doc171923
  6)administrateurs du schéma (use refreshFromLDAP)Doc171923
  5)Admins du domaine (use refreshFromLDAP)Doc171923
  4)Administrateurs de l'entreprise (use refreshFromLDAP)Doc171923
  3)Administrateurs (use refreshFromLDAP)Doc171923
  2)Utilisa. du domaine (use refreshFromLDAP)Doc171923
  1)Utilisateurs (use refreshFromLDAP)Doc171923

3.3 Mapping attributs LDAP et Dynacase

Lors de la création d'un utilisateur réseau (ou du rafraîchissement de sa fiche), les attributs LDAP sont importés dans les attributs Dynacase en suivant une table de correspondance qui est spécifiée dans le fichier networkuser.ods, dans l'onglet LDAP.

On y définit des associations entre un attribut LDAP et son équivalent Dynacase.

Par exemple, le numéro de téléphone (attribut Dynacase US_PHONE) est pris à partir de l'attribut LDAP telephoneNumber pour les objets LDAP qui héritent du schéma inetOrgPerson :

LDAPMAP;LDAPUSER;telephoneNumber;US_PHONE;inetOrgPerson;1

Pour charger son propre « mapping », en complément de celui définit dans networkuser.ods, on pourra créer un fichier CSV (ou ODS) et y définir ses règles de correspondance, et importer ce fichier comme on importe une définition de famille.

Pour modifier, ou supprimer une entrée, il faudra manipuler directement la table docattrldap en base de données (qui a la même structure que le fichier LDAPMAP décrit ci-dessus :

SELECT * FROM docattrldap;
UPDATE docattrldap SET ldap_attribute = 'someOtherPhoneNumber' WHERE freedom_attribute = 'US_PHONE';
[]

3.4 Paramétrage des modes sécurisées NU_LDAP_MODE

Le paramètre NU_LDAP_MODE permet de spécifier la connexion en mode sécurisée (SSL ou TLS) avec le serveur LDAP ou Active Directory.

La gestion de la demande et de la vérification du certificat du serveur par le client est paramétrable par le fichier de configuration standard de la bibliothèque OpenLDAP :

Chapitre 4 Dépannage/Troubeshooting

4.1 Vérification connexion Active Directory

Pour vérifier manuellement la connexion au serveur Active Directory on peut utiliser la commande ldapsearch :

# ldapsearch -H ldap://10.11.12.13/ -b dc=corp,dc=example,dc=net -D cn=root,cn=users,dc=corp,dc=example,dc=net -x -W
Enter LDAP Password: ****

4.2 Code erreur courant Active Directory

Lors du test de la connexion par ldapsearch, celui-ci peut retourner un message d'erreur additionnel de la forme :

additional info: 80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 525, v1771

Ci-dessous, une liste non-exhaustive de quelques codes d'erreur :

AcceptSecurityContext error, data 525
Le DN de connexion utilisé n'existe pas sur le serveur (ERROR_NO_SUCH_USER).
AcceptSecurityContext error, data 52e
Le mot de passe n'est pas correct pour ce DN de connexion (ERROR_LOGON_FAILURE).
AcceptSecurityContext error, data 530
Le DN n'est pas actuellement autorisé à se connecter (ERROR_INVALID_LOGON_HOURS).
AcceptSecurityContext error, data 531
L'utilisateur n'est pas autorisé a se connecter depuis ce poste (ERROR_INVALID_WORKSTATION).
AcceptSecurityContext error, data 532
Le mot de passe a expiré (ERROR_PASSWORD_EXPIRED).
AcceptSecurityContext error, data 533
Le compte est désactivé (ERROR_ACCOUNT_DISABLED).
AcceptSecurityContext error, data 57
Le DN de connexion est trop long (255 chars max).
AcceptSecurityContext error, data 701
Le compte a expiré (ERROR_ACCOUNT_EXPIRED).
AcceptSecurityContext error, data 773
Problème lié à l'expiration/changement de mot de passe du compte sur Active Directory Application Mode (ERROR_PASSWORD_MUST_CHANGE).
AcceptSecurityContext error, data 775
Le compte est verrouillé (ERROR_ACCOUNT_LOCKED_OUT).

Liste des illustrations

Licence

Ce document est publié sous licence CC http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

Vous êtes libres :

Selon les conditions suivantes :

Édition

Guide d'intégration
© Anakeen, Anakeen Labs <labs@anakeen.com>
Module NetworkUser, version 1.3
Édition 2
Publié le 03/08/2018

Ce livre a été produit avec easybook 4.8, logiciel libre et open source développé par Javier Eguiluz à l'aide de différents composants Symfony.

Anakeen

Créé en 1998, Anakeen est un éditeur expert dans l'amélioration de la gestion des processus et de l'information avec pour objectif principal : valoriser les fonctions support en les libérant des tâches à faible valeur ajoutée. Le résultat opérationnel a toujours été recherché par toutes les entreprises et particulièrement aujourd'hui où le moindre détail peut faire la différence afin d'être ou de rester compétitif sur son marché. Pour chaque fonction support, être en situation de valoriser sa contribution au résultat global de l’entreprise est plus que jamais devenu une nécessité.

Impliqué depuis 1998 dans le logiciel libre, Anakeen est un acteur majeur de la gestion de l'information. Nos contributions pour l'utilisation des standards ouverts, la garantie de l'accès au code source et la grande diversité de nos partenaires vous assure pérennité et réversibilité.

L'ensemble du code PHP de Dynacase Platform est disponible sous licence Open Source, le modèle de données est documenté et public. Mais plus que ça, le code source est commenté dans l'objectif de faciliter sa compréhension pour la réutilisation ou la modification. Aussi toute la documentation concernant le produit est mise en ligne sur www.dynacase.org.

En choisissant un logiciel Open Source, vous faites le choix de la sécurité, car vous avez l'assurance de vérifier le fonctionnement du logiciel et la qualité du code.

Nos offres et services, nous permettent d'assurer le financement du développement produit mais aussi de contribuer chaque jour à l'adoption du business model Open Source.