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 :
admin
(administrateur Dynacase)(nom logique USER_ADMIN
) et
guest
(utilisateur anonyme)(nom logique USER_GUEST
) ;gadmin
(groupe d'administration)(nom logique GADMIN
) et all
(groupe par défaut des utilisateurs)(nom logique GDEFAULT
).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.
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.
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.
Figure 2. Consultation d'un LDAPUSER
Figure 3. Consultation d'un LDAPGROUP
Afin de créer les comptes au LDAP équivalent dans Dynacase, il est nécessaire de renseigner les paramètres suivants :
Figure 4. Paramètres applicatifs
NU_LDAP_HOST
NU_LDAP_PORT
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
NU_LDAP_PASSWORD
NU_LDAP_BINDDN
: laisser vide si bind anonyme (défaut
vide).NU_LDAP_KIND
AD
(Active Directory), POSIX
(Unix/Posix) ou
INET
(Générique inetOrgPerson).NU_LDAP_GROUP_BASE_DN
NU_LDAP_GROUP_FILTER
NU_LDAP_USER_BASE_DN
NU_LDAP_USER_FILTER
NU_LDAP_GROUP_BASE_DN
= "ou=dynacase,ou=applications,dc=example,dc=net"
NU_LDAP_GROUP_FILTER
= ""
NU_LDAP_USER_BASE_DN
= "cn=users,dc=example,dc=net"
NU_LDAP_USER_FILTER
= "(!(objectClass=computer))"
NU_LDAP_GROUP_BASE_DN
et NU_LDAP_USER_DN
permettent de spécifier une base
DN de recherche distinct pour les groupes et les utilisateurs. Si vos groupes
et vos utilisateurs sont dans la même sous-branche, il faudra alors renseigner
le même base DN dans les deux paramètres.NU_LDAP_GROUP_FILTER
et NU_LDAP_USER_FILTER
permettent en plus de
spécifier un filtre, au format LDAP, afin de restreindre la recherche des
groupes et des utilisateurs a un sous-ensemble de ces éléments.ldifde
(équivalent du ldapsearch
d'OpenLDAP). Exemple pour
dumper les utilisateurs d'un serveur Active Directory dans un fichier local :
ldifde -r ”(ObjectClass=User”) -s 127.0.0.1 -f utilisateurs.ldif
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";
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 ) );
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
N
).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
N
).--verbose=Y|N
N
).--dryrun=Y|N
N
).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
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'; […]
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 :
TLS OPTIONS
de la documentation de "ldap.conf"
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: ****
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
ERROR_NO_SUCH_USER
).AcceptSecurityContext error, data 52e
ERROR_LOGON_FAILURE
).AcceptSecurityContext error, data 530
ERROR_INVALID_LOGON_HOURS
).AcceptSecurityContext error, data 531
ERROR_INVALID_WORKSTATION
).AcceptSecurityContext error, data 532
ERROR_PASSWORD_EXPIRED
).AcceptSecurityContext error, data 533
ERROR_ACCOUNT_DISABLED
).AcceptSecurityContext error, data 57
AcceptSecurityContext error, data 701
ERROR_ACCOUNT_EXPIRED
).AcceptSecurityContext error, data 773
ERROR_PASSWORD_MUST_CHANGE
).AcceptSecurityContext error, data 775
ERROR_ACCOUNT_LOCKED_OUT
).Ce document est publié sous licence CC http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
Vous êtes libres :
Selon les conditions suivantes :
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.