Liste certificats LDAP Documentum

De EjnTricks
Révision de 2 janvier 2014 à 14:29 par Etienne (discussion | contributions)

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

Lors de l'installation d'un annuaire LDAP, il est parfois nécessaire d'injecter un certificat au niveau de la Docbase. Il est parfois nécessaire de connaître les certificats déjà installés. Ceci est faisable sous DA, mais cela est totalement réalisable en script API.

Cet article se propose de lister les différentes commandes afin de lister les certificats.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Study icon.png Analyse DA

XML format icon.png Définition composant

Le composant ldapcertdblist est utilisé pour lister les certificats installés. Il est défini dans le fichier webcomponent/config/admin/ldapcertdb/ldapcertdblist_component.xml avec la configuration suivante:

Tout le code est réalisé dans la classe JAVA associée.

Java format icon.png Classe d'instance

La récupération des certificats s'effectue dans la méthode initDataGrid.

Les données qui viennent peuplées la grille ne proviennent pas d'une requête DQL mais du résultat d'une méthode serveur, donc le commande d'exécution est construite dans la méthode initDataGrid. La première opération consiste à récupérer l'emplacement défini dans l'objet dm_location dont le nom est ldapcertdb_loc. Cette valeur est utilisée pour l'argument database_path.

Puis ceci est envoyé à la méthode initialize de la classe CertDbInfoCache, dans le même package.

Java format icon.png Classe CertDbInfoCache

Nous passerons sur le fait que tout est en statique. Ce qui fait que si plusieurs personnes travaille sur DA en même temps, cela peut poser problème. Une fois la méthode serveur (dm_LDAPCertDbAutomation) exécutée, un identifiant de document est retourné. Celui-ci, au format XML, contient le listing des certificats installés.

Mais dans le cadre de cette étude, nous avons suffisamment d'informations pour effectuer les opérations manuellement.


Command-icon.png Exécution

L'analyse de DA a permis d'identifier toutes les actions nécessaire pour effectuer tout cela avec un simple Samson.

La première action est donc de récupérer l'emplacement de ldapcertdb_loc

API> retrieve,c,dm_location where object_name='ldapcertdb_loc'
...
3a13f97280000146
API> get,c,l,file_system_path
...
/logiciels/dctm/6.7_sp1/dba/secure/ldapdb

Il faut conserver car utiliser dans l'appel de la méthode serveur. Dans l'exemple de commande, le compte de conenxion est dmadmin et la docbase my_docbase.

API> apply,c,NULL,DO_METHOD,METHOD,S,dm_LDAPCertDbAutomation,ARGUMENTS,S,-operation_id display -launch_type auto 
-user_name dmadmin -repository_name my_docbase -database_path /logiciels/dctm/6.7_sp1/dba/secure/ldapdb 
-user_domain,LAUNCH_DIRECT,B,T,SAVE_RESULTS,B,T,RUN_AS_SERVER,B,T,TRACE_LAUNCH,B,T
...
q0

Dans le cas où tout fonctionne correctement, la commande va retourner un identifiant de collection. Donc comme toute collection, il faut appeler la commande next dessus afin de lire les résultats.

API> next,c,q0
...
Ok

Etant en API, le plus simple est de demandé un dump de la "ligne" en cours de lecture suite à la commande next.

API> dump,c,q0
...
USER ATTRIBUTES

  result                     : 0913f97280223d01
  result_doc_id              : 0913f97280223d01
  process_id                 : 0
  launch_failed              : F
  method_return_val          : 0
  os_system_error            : No Error
  timed_out                  : F
  time_out_length            : 86400
  app_server_host_name       : localhost
  app_server_port            : 9040
  app_server_uri             : /DmMethods/servlet/DoMethod
  error_message              : 

SYSTEM ATTRIBUTES


APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

Comme toute collection, il faut la fermer.

API> close,c,q0
...
Ok


Les "attributs" result et result_doc_id donne l'identifiant du document créé en base, et qui contient la liste des certificats installés. Il ne reste plusqu'à le télécharger à l'aide de la commande getfile

API> getfile,c,0913f97280223d01
...
C:\logiciels\samson\dmcl\0013f972\130\80005d20\Resulta47da296.txt

Une fois téléchargé, il n'est pas nécessaire de conserver le document dans la docbase. Il suffit de le supprimer avec la commande destroy.

API> destroy,c,0913f97280223d01
...
Ok

Le contenu du fichier est au format XML et doit ressembler à quelque chose comme ceci:

<?xml version="1.0" encoding="UTF-8" ?> 
<cert-database>
	<cert-object>
		<nickname>...</nickname>
		<issuedto>...</issuedto>
		<issuedby>...</issuedby>
		<validfrom>...</validfrom>
		<validto>...</validto>
		<signalg>...</signalg>
		<serialnum>...</serialnum>
		<version>...</version> 
	</cert-object>
	<cert-object>
		<nickname>...</nickname>
		<issuedto>...</issuedto>
		<issuedby>...</issuedby>
		<validfrom>...</validfrom>
		<validto>...</validto>
		<signalg>...</signalg>
		<serialnum>...</serialnum>
		<version>...</version> 
	</cert-object>
</cert-database>

Il y a autant de noeud cert-object qu'il y a de certificats installés.

Books-icon.png Annexe

Cet article a mis en évidence l'utilisation de la méthode serveur dm_LDAPCertDbAutomation, dont la définition est la suivante:

 object_name                : dm_LDAPCertDbAutomation
 title                      : Docbase
 subject                    : 
 authors                  []: <none>
 keywords                 []: <none>
 resolution_label           : 
 owner_name                 : dmadmin
 owner_permit               : 7
 group_name                 : docu
 group_permit               : 1
 world_permit               : 1
 log_entry                  : 
 acl_domain                 : my_docbaseowner
 acl_name                   : dm_acl_superusers
 language_code              : 
 method_verb                : com.documentum.ldap.ldapcertdb.LDAPCertDbAutomation 
 method_args              []: <none>
 timeout_min                : 30
 timeout_max                : 604800
 timeout_default            : 86400
 launch_direct              : F
 launch_async               : F
 trace_launch               : F
 run_as_server              : T
 use_method_content         : F
 method_type                : java
 use_method_server          : T
 success_return_codes     []: <none>
 success_status             : 
 is_restartable             : F