Déclaration annuaire LDAP Documentum

De EjnTricks
Révision de 28 août 2014 à 10:48 par Etienne (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Comme toute opération d'administration sous Documentum, les personnes auront tendance à utiliser DA pour effectuer les diverses manipulations. Après de multiples tentatives, il paraît beaucoup plus simple d'effectuer cette opération manuellement et par script.

En effet, il est nécessaire que le serveur, où est hébergé DA, ait un accès à l'annuaire LDAP pour mener à bien la création. Lors des différents onglets de création, des vérifications de connexion peuvent être réalisés par exemple. Or dans des environnements de production, il n'est pas rare de voir que seul le flux est ouvert entre le content server et l'annuaire LDAP.

Un deuxième argument pour adopter cette approche concerne le déploiement d'application en production. Il est beaucoup plus simple de fournir au équipes quelques scripts API / DQL / shell que de devoir rédiger une documentation complète sur les manipulations dans DA.

Cet article se propose donc de lister les différents scripts pour mener à bien l'installation d'une telle configuration.


Hand-icon.png Votre avis

Current user rating: 99/100 (2 votes)

 You need to enable JavaScript to vote


Environnement LDAP

La première étape consiste à créer:

  • Une ACL pour l'objet de configuration.
  • Un répertoire où seront stockées les configurations LDAP.

Les droits d'accès sont définis ainsi.

Accessor name Permit
dm_world 2 (relate)
dm_owner 7 (delete)
docu 3 (read)

Pour cette création, un script API suffit:

create,c,dm_acl
set,c,l,object_name
LDAP_acl
set,c,l,owner_name
dm_dbo
grant,c,l,dm_world,2
grant,c,l,dm_owner,7
grant,c,l,docu,5,3
save,c,l


Le répertoire est ensuite créer sous /System avec le nom LDAPConfig. Encore une fois, l'utilisation d'un script API est ce qu'il y a de plus simple.

create,c,dm_folder
set,c,l,object_name
LDAPConfig
set,c,l,acl_name
LDAP_acl
set,c,l,acl_domain
dm_dbo
link,c,l,/System
save,c,l


Création configuration LDAP

Une fois l'environnement mis en place, il faut créer l'objet dm_ldap_config qui sera stocké dans le nouveau répertoire. Dans cet exemple, la configuration utilisera le mode SSL avec un certificat. L'objectif est:

Attribut Valeur
Nom (object_name) My LDAP Config
ACL (acl_name et acl_domain) LDAP_acl@dm_dbo

Correspond aux droits d'accès créé précédemment

Server LDAP (ldap_host) ldapServer

Il est également possible de mettre une adresse IP ce qui serait une mauvaise pratique.

Numéro port (port_number) 389

Numéro classique.

Classe des personnes (person_obj_class) personClass
Classe des groupes (group_obj_class) groupClass
Recherche de base pour les utilisateurs (per_search_base) ou=people,dc=mycompany
Recherche de base pour les groupes (grp_search_base) ou=groups,dc=mycompany
Filtre des utilisateurs (per_search_filter) (uid=*)
Filtre des groupes (grp_search_filter) (cn=*)
Compte de connexion (bind_dn) uid=admin,ou=applis,dc=mycompany
Type Documentum utilisateurs (user_subtype) dm_user
Renommer les utilisateurs lors de la synchronisation (rename_user_option) F

Les comptes ne seront pas renommés en cas de modification détectés par la synchronisation.

Désactivation d'un utilisateur (deactivate_user_option) T

Si un utilisateur n'est plus dans l'annuaire le compte Documentum sera désactivé. Il est préférable de ne jamais les supprimer.

Renommer les groupes lors de la synchronisation (rename_group_option) F

Les groupes ne seront pas renommés en cas de modification détectés par la synchronisation.

Mode import (import_mode) both

Les utilisateurs et les groupes seront synchronisés.

Type de recherche (bind_type) bind_search_dn

Les objets seront recherchés dans l'annuaire à partir du dn. L'identifiant LDAP sera fournis à l'annuaire lors de la connexion.

Utilisation programme externe de connexion (use_ext_auth_prog) F

On laisse l'annuaire réaliser l'authentification.

Activation mode ssl (ssl_mode) 1
Numéro port SSL (ssl_port) 636

Numéro classique.

Emplacement du certificat (certdb_location) ldapcertdb_loc

C'est la valeur par défaut correspondant à un object dm_location, normalement présent dans la docbase.

Synchronisation initiale (first_time_sync) F

Utilisé par la synchronisation afin d'identifié si elle doit être incrémentale ou complète. Ici, elle sera incrémentale.

Nombre d'essai en cas d'échec (retry_count) 3
Intervalle entre tentative (retry_interval) 3
Temps de latence avant bascule sur l'annuaire secondaire (failover_use_interval) 300

Exprimé en secondes, soit 5 minutes.

Type d'annuaire netscape

Dans le cas d'une déclaration d'un annuaire OpenLDAP la valeur netscape doit être utilisée. Mais il faut modifier le processus de synchronisation.

Emplacment /System/LDAPConfig

Pour cet exemple, une configuration de mapping est également mise en place sur les groupes et les utilisateurs.

Attribut cible (map_attr) Valeur source (map_val) Type cible (map_attr_type) Type de donné (map_val_type) Traitement en cas d'erreur (map_rejection)
user_name cn dm_user A 2
user_login_name uid dm_user A 2
user_address mail dm_user A 0
group_name cn dm_group A 2

Les informations sont particulièrement nombreuses, mais une fois le premier script créé, cela reste plus rapide que de passer par DA.

### Create the LDAP configuration ###
create,c,dm_ldap_config
set,c,l,object_name
My LDAP Config
set,c,l,acl_name
LDAP_acl
set,c,l,acl_domain
dm_dbo
set,c,l,ldap_host
ldapServer
set,c,l,port_number
389
set,c,l,person_obj_class
personClass
set,c,l,group_obj_class
groupClass
set,c,l,per_search_base
ou=people,dc=mycompany
set,c,l,grp_search_base
ou=groups,dc=mycompany
set,c,l,per_search_filter
(uid=*)
set,c,l,grp_search_filter
(cn=*)
set,c,l,bind_dn
uid=admin,ou=applis,dc=mycompany
set,c,l,user_subtype
dm_user
set,c,l,rename_user_option
F
set,c,l,deactivate_user_option
T
set,c,l,rename_group_option
F
set,c,l,import_mode
both
set,c,l,bind_type
bind_search_dn
set,c,l,use_ext_auth_prog
F
set,c,l,ssl_mode
1
set,c,l,ssl_port
636
set,c,l,certdb_location
ldapcertdb_loc
set,c,l,first_time_sync
F
set,c,l,retry_count
3
set,c,l,retry_interval
3
set,c,l,failover_use_interval
300
append,c,l,map_attr
user_name
append,c,l,map_val
cn
append,c,l,map_attr_type
dm_user
append,c,l,map_val_type
A
append,c,l,map_rejection
2
append,c,l,map_attr
user_login_name
append,c,l,map_val
uid
append,c,l,map_attr_type
dm_user
append,c,l,map_val_type
A
append,c,l,map_rejection
2
append,c,l,map_attr
user_address
append,c,l,map_val
mail
append,c,l,map_attr_type
dm_user
append,c,l,map_val_type
A
append,c,l,map_rejection
0
append,c,l,map_attr
group_name
append,c,l,map_val
cn
append,c,l,map_attr_type
dm_group
append,c,l,map_val_type
A
append,c,l,map_rejection
2
set,c,l,a_application_type
netscape
link,c,l,/System/LDAPConfig
save,c,l


Injection du certificat

Dans la déclaration faite, le mode SSL est activé, nécessitant alors la mise ne place d'un certificat. Cette mise en place doit se réalisée au niveau du content server. Afin de garantir une installation sans accès au content serveur, le certificat va être injecté dans la docbase dans un fichier temporaire.

create,c,dm_document
set,c,l,object_name
LDAP CERTIFICAT
set,c,l,a_content_type
crtext
setfile,c,l,/tmp/my certificat.cer
link,c,l,/System/LDAPConfig
save,c,l


Finalisation installation

Enfin, le mot de passe du compte d'accès à l'annuaire, ainsi que le certificat doivent être déployés au niveau du content server. Ici la roue ne sera pas réinventée et le code standard standard d'une méthode serveur est repris. Pour cette partie, le langage utilisé est le Docbasic, encore largement utilisée au niveau des méthodes d'installation. Seule la dernière méthode est vraiment intéressante pour cette article.

Cette méthode serveur permet de générer un fichier ldap_<OBJECT_ID>.cnt contenant le mot de passe crypté du compte d'accès à l'annuaire, <OBJECT_ID> étant l'identifiant de l'objet dm_ldap_config. Et le contenu du certificat, préalablement injecté en base, va être référencé dans le filesystem d'administration.

Il ne reste plus qu'à créer cette méthode server, sosu le nom amexio_ldap_init. Le code sera injecté sur celle-ci et l'exécution s'effectue en utilisant le fichier associé, grâce à l'attribut use_method_content.

create,c,dm_method
set,c,l,object_name
amexio_ldap_init
set,c,l,method_verb
./dmbasic -einitldap
set,c,l,timeout_min
30
set,c,l,timeout_max
604800
set,c,l,timeout_default
86400
set,c,l,launch_direct
T
set,c,l,launch_async
F
set,c,l,trace_launch
F
set,c,l,run_as_server
T
set,c,l,use_method_content
T
set,c,l,method_type
dmbasic
set,c,l,use_method_server
F
set,c,l,a_content_type
text
setfile,c,l,/tmp/ldap_init_methods.ebs
save,c,l

A noter le fichier /tmp/ldap_init_methods.ebs est l'emplacement du code Docbasic. Il ne reste plus qu'à exécuter la méthode, encore une fois en script API.

apply,c,NULL,DO_METHOD,METHOD,S,amexio_ldap_init,ARGUMENTS,S,<DOCBASE> "<LDAP CONFIG NAME>" <LDAP PASSWORD>
close,c,q0

Où il faut remplacer:

  • <DOCBASE> par le nom de la docbase
  • <LDAP CONFIG NAME> nom de l'objet dm_ldap_config, pour cet exemple My LDAP Config
  • <LDAP PASSWORD> mot de passe du compte d'accès au serveur LDAP.


Dans cet exemple, il existe un bug dans le cas où le nom de l'objet dm_ldap_config contient le caractère '. En effet, cette valeur n'est pas échappée lors de la recherche de l'objet.