itds https://www.vincentliefooghe.net/ fr IBM Directory Server : gestion des mots de passe https://www.vincentliefooghe.net/content/ibm-directory-server-gestion-des-mots-passe <span property="dc:title" class="field field--name-title field--type-string field--label-hidden">IBM Directory Server : gestion des mots de passe</span> <div property="content:encoded" class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>L'installation par défaut de l'annuaire ISDS ne semble pas "terminée" en ce qui concerne la gestion des mots de passe : pas de politique de mot de passe par défaut, pas d'activation non plus. Et une modification par <em>ldapmodify</em> stocke le mot de passe en clair (tout au moins, il ressort en clair dans un <em>ldapsearch</em>).</p> <h2>Autoriser le changement de mot de passe par l'utilisateur</h2> <p>Par défaut, l'utilisateur ne peut pas modifier lui-même son mot de passe. Par exemple, en utilisant la commande <em>ldapchangepwd</em> renvoie une erreur :</p> <pre> /opt/ibm/ldap/V6.3/bin/ldapchangepwd -D uid=jdoe,ou=people,o=example.com -w secret -n SuperSecret ldap_simple_bind: Error, Password must be changed after reset changing password for entry uid=jdoe,ou=people,o=example.com Insufficient access --- Error, Password may not be modified</pre><p>Pour résoudre ce problème, il faut :</p> <ul> <li>ajouter une ACL permettant le changement de mot de passe en mode "Self"</li> <li>permettre le changement de mot de passe par l'utilisateur lui-même dans la politique de mot de passe (qu'il faut créer)</li> </ul> <h3>Ajout d'une politique de mot de passe par défaut</h3> <p>On va créer un fichier LDIF qui contient la définition de la politique globale :</p> <pre> dn: cn=pwdpolicy,cn=ibmpolicies objectclass: container objectclass: pwdPolicy objectclass: ibm-pwdPolicyExt objectclass: ibm-pwdGroupAndIndividualPolicies objectclass: top cn: pwdPolicy pwdAttribute: userPassword pwdGraceLoginLimit: 0 pwdLockoutDuration: 0 pwdFailureCountInterval: 0 passwordMaxRepeatedChars: 0 passwordMaxConsecutiveRepeatedChars: 0 pwdMaxAge: 0 pwdMinAge: 0 pwdExpireWarning: 0 passwordMinAlphaChars: 0 passwordMinOtherChars: 0 passwordMinDiffChars: 0 pwdLockout: false pwdAllowUserChange: true pwdMustChange: true pwdSafeModify: false ibm-pwdGroupAndIndividualEnabled: false ibm-pwdPolicy: true pwdCheckSyntax: 1 pwdInHistory: 5 pwdMaxFailure: 3 pwdMinLength: 6</pre><p> </p> <p>Le fichier sera ensuite ajouté à l'annuaire via <em>ldapadd</em> avec un compte administrateur.</p> <h3>Ajout d'une ACL permettant le changement</h3> <p>On va également ajouter une ACL sur l'arborescence qui contient les comptes</p> <pre> dn: ou=people,o=example.com changetype: modify add: aclentry aclentry: access-id:CN=THIS:at.userPassword:rwsc:normal:rsc</pre><p>Et on l'ajoute avec un <em>ldapmodify</em></p> <p>Suite à cela, la modification du mot de passe fonctionne correctement, par l'utilisateur lui-même.</p> <pre> /opt/ibm/ldap/V6.3/bin/ldapchangepwd -D uid=jdoe,ou=people,o=example.com -w secret -n SuperSecret changing password for entry uid=jdoe,ou=people,o=example.com</pre><p>Par contre, si on récupère avec un ldapsearch, la valeur est renvoyée en clair...</p> <pre> /opt/ibm/ldap/V6.3/bin/ldapsearch -D uid=jdoe,ou=people,o=example.com -w SuperSecret -b o=example.com uid=jdoe userpassword uid=jdoe,ou=people,o=example.com userpassword=SuperSecret</pre><h2>Modifier l'algorithme d'encryption</h2> <p>Par défaut, les mots de passe sont chiffrées avec l'algorithme AES256, qui est symétrique. Du coup, le mot de passe est décodé par le moteur de l'annuaire avant d'être affiché.</p> <p>Il vaut mieux donc utiliser un algorithme asymétrique type SSHA ou SHA2-x.</p> <pre> dn: cn=configuration changetype: modify replace: ibm-slapdPwEncryption ibm-slapdPwEncryption: ssha</pre><p>Si on redémarre l'annuaire (ou si on utilise la commande <em>idsldapexop</em>), on voit que le mot de passe est alors stocké de manière irréversible.</p> <pre> /opt/ibm/ldap/V6.3/bin/ldapchangepwd -D uid=jdoe,ou=people,o=example.com -w SuperSecret-n Pa55word changing password for entry uid=jdoe,ou=people,o=example.com /opt/ibm/ldap/V6.3/bin/ldapsearch -D uid=jdoe,ou=people,o=example.com -w SuperSecret -b o=example.com uid=jdoe userpassword uid=jdoe,ou=people,o=example.com userpassword={SSHA}4EqpfNQFq1aWqT+ouD5bEKFPyrIiFSd7AEQORENiet0xYiqgJLi73Q==</pre><h2>Import de mots de passe hachés</h2> <p>Si on migre les données d'un autre annuaire, via un fichier LDIF par exempe, avec un mot de passe chiffré dans un autre algorithme, ITDS utilise alors cet algorithme, et pas celui défini par défaut.</p> <p><strong>Attention</strong>, si on a activé l'option <em>pwdMustChange</em>, dans la politique de mot de passe, l'utilisateur sera obligé de modifier son mot de passe à la première connexion.</p> <p>Ce paramètre est dynamique, on peut donc le repasser à False si nécessaire.</p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> </div> <span rel="sioc:has_creator" class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/users/vincentl" typeof="schema:Person" property="schema:name" datatype="">vincentl</span></span> <span property="dc:date dc:created" content="2020-04-13T15:42:22+00:00" datatype="xsd:dateTime" class="field field--name-created field--type-created field--label-hidden">lun 13/04/2020 - 17:42</span> <div class="field field--name-field-categorie field--type-entity-reference field--label-above"> <div class="field__label">Catégorie</div> <div class="field__item"><a href="/cat%C3%A9gorie/iam" hreflang="fr">IAM</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tag</div> <div class="field__items"> <div class="field__item"><a href="/tags/itds" hreflang="fr">itds</a></div> <div class="field__item"><a href="/tags/ibm" hreflang="fr">ibm</a></div> <div class="field__item"><a href="/tags/ldap" hreflang="fr">ldap</a></div> </div> </div> <section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"> <h2 class="title comment-form__title">Ajouter un commentaire</h2> <drupal-render-placeholder callback="comment.lazy_builders:renderForm" arguments="0=node&amp;1=200&amp;2=comment_node_blog&amp;3=comment_node_blog" token="CguhFyApblCiIABXQL6ywDk-91Pf663FSaAfAxz5ikg"></drupal-render-placeholder> </section> Mon, 13 Apr 2020 15:42:22 +0000 vincentl 200 at https://www.vincentliefooghe.net ITDS : modifier le schéma en live https://www.vincentliefooghe.net/content/itds-modifier-le-sch%C3%A9ma-live <span property="dc:title" class="field field--name-title field--type-string field--label-hidden">ITDS : modifier le schéma en live</span> <div property="content:encoded" class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Par défaut, le schéma de données de ITDS (IBM Tivoli Directory Server) est chargé au démarrage, à partir du fichier <em>V3.modifiedschema</em>, présent dans le répertoire /etc de l'instance d'annuaire.</p> <p>Par exemple, pour une instance nommé <strong>idsldap</strong>, le fichier sera dans le répertoire <em>/product/ldap/idsslapd-idsldap/etc.</em></p> <p>Si on veut ajouter un attribut ou une classe d'objet à notre schéma, il est évidemment possible d'arrêter le serveur, modifier le fichier V3.modifiedschema, puis redémarrer ITDS.</p> <p>Mais on peut aussi vouloir faire une mise à jour sans arrêter le service, en passant par la commande <strong>ldapmodify</strong> et un fichier ldif.</p> <p>Par exemple, si on veut ajouter un attribut "<em>customPostLink</em>' et une classe d'objet '<em>customBlogPost</em>', on pourra utiliser un fichier ldif <em>customBlog.ldif</em> :</p> <pre>dn: cn=schema changetype: modify add: attributetypes attributetypes: ( 1.3.6.1.4.1.16832.123.7.10 NAME 'customPostLink' DESC 'Link to blog post' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 USAGE userApplications ) dn: cn=schema changetype: modify add: objectclasses objectclasses: ( 1.3.6.1.4.1.16832.123.8.10 NAME 'customBlogPost' DESC 'A custom Blog post' SUP top STRUCTURAL MUST ( title $ description $ uid ) MAY ( customPostLink) ) </pre><p>Puis pour modifier le schéma, utiliser <strong>ldapmodify</strong> :</p> <pre>/opt/ibm/ldap/V6.2/bin/ldapmodify -D cn=root -w secret -f customBlog.ldif</pre><p>On peut ensuite vérifier que la modification est bien prise en compte :</p> <pre>grep custom V3.modifiedschema ( 1.3.6.1.4.1.16832.123.8.10 NAME 'customBlogPost' DESC 'A custom Blog post' SUP top STRUCTURAL MUST ( description $ title $ uid ) MAY customPostLink ) ( 1.3.6.1.4.1.16832.123.7.10 NAME 'customPostLink' DESC 'Link to blog post' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) </pre><p>On peut de la même manière modifier la définition d'un attribut ou d'une classe d'objet. Mais dans ce cas, il convient de s'assurer que les modifications n'ont pas d'impact sur les objets déjà existants.</p> </div> <span rel="sioc:has_creator" class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/users/vincentl" typeof="schema:Person" property="schema:name" datatype="">vincentl</span></span> <span property="dc:date dc:created" content="2016-01-20T15:18:44+00:00" datatype="xsd:dateTime" class="field field--name-created field--type-created field--label-hidden">mer 20/01/2016 - 16:18</span> <div class="field field--name-field-categorie field--type-entity-reference field--label-above"> <div class="field__label">Catégorie</div> <div class="field__item"><a href="/cat%C3%A9gorie/iam" hreflang="fr">IAM</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tag</div> <div class="field__items"> <div class="field__item"><a href="/tags/itds" hreflang="fr">itds</a></div> <div class="field__item"><a href="/tags/ldap" hreflang="fr">ldap</a></div> <div class="field__item"><a href="/tags/schema" hreflang="fr">schema</a></div> </div> </div> <section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"> </section> Wed, 20 Jan 2016 15:18:44 +0000 vincentl 146 at https://www.vincentliefooghe.net [ITDS] Modification de la longueur d'un attribut https://www.vincentliefooghe.net/content/itds-modification-la-longueur-dun-attribut <span property="dc:title" class="field field--name-title field--type-string field--label-hidden">[ITDS] Modification de la longueur d&#039;un attribut</span> <div property="content:encoded" class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><h2>Modification de la longueur d'un attribut ITDS</h2> <p>Lors du lancement d'un traitement sur un annuaire IBM Tivoli Directory Server (ITDS), on remarque ceci dans les logs (<em>ibmslapd.log</em>) :</p> <pre>07/11/2013 03:26:23 PM GLPRDB069E Attribute IIRUSERATTRIB8 has a maximum value length of 240. Current attribute value is of length 242. </pre><p>Voyons ce que dit le schéma de l'annuaire :</p> <pre>cd /product/ldap/idsslapd-idsldap/etc grep -i IIRUSERATTRIB8 CustomSchema.at ( 1.3.6.1.4.1.16832.123.2.108 NAME 'iirUserAttrib8' DESC 'User Attribute 8' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15) </pre><p>La déclaration de l'attribut pour DB2 (DBNAME) ne comprend pas de longueur explicite =&gt; c'est la longueur par défaut = 240 caractères.</p> <p>On peut le vérifier en accédant à la base de données :</p> <pre>idsldap &gt; db2 connect to idsldap Database Connection Information Database server = DB2/LINUXX8664 9.7.0 SQL authorization ID = IDSLDAP Local database alias = IDSLDAP idsldap &gt; db2 describe table IIRUSERATTRIB8 Data type Column Column name schema Data type name Length Scale Nulls ------------------------------- --------- ------------------- ---------- ----- ------ EID SYSIBM INTEGER 4 0 No IIRUSERATTRIB8 SYSIBM VARCHAR 240 0 No RIIRUSERATTRIB8 SYSIBM VARCHAR 240 0 Yes 3 record(s) selected. </pre><h2>Modification de la longueur</h2> <p>Le changement de longueur sur un attribut ITDS <strong>DOIT</strong> se faire via un fichier LDIF et une commande <em>idsldapmodify</em>, ou via l'interface d'administration de l'annuaire.<br />Par exemple, voici le contenu du fichier <em>ChangeLength.ldif</em> :</p> <pre>dn: cn=schema changetype: modify replace: attributetypes attributetypes: ( 1.3.6.1.4.1.16832.123.2.108 NAME 'iirUserAttrib8' DESC 'User Attribute 8' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15) - replace: ibmattributetypes ibmattributetypes: ( 1.3.6.1.4.1.16832.123.2.108 DBNAME ('iirUserAttrib8' 'iirUserAttrib8') LENGTH 384 SUBSTR ) </pre><p>On modifie le schéma avec la commande :</p> <pre>idsldapmodify -D cn=root -w MotDePasse -f ChangeLength.ldif Operation 0 modifying entry cn=schema </pre><p>On peut vérifier que le changement de longueur a bien été pris en compte dans les fichiers de configuration ITDS :</p> <pre>grep -i iiruserattrib8 /product/ldap/idsslapd-idsldap/etc/* /product/ldap/idsslapd-idsldap/etc/CustomSchema.at:( 1.3.6.1.4.1.16832.123.2.108 NAME 'iirUserAttrib8' DESC 'User Attribute 8' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) /product/ldap/idsslapd-idsldap/etc/CustomSchema.at:( 1.3.6.1.4.1.16832.123.2.108 DBNAME ( 'iirUserAttrib8' 'iirUserAttrib8' ) LENGTH 384 SUBSTR ) </pre><p>Et le contenu de la base de données :</p> <pre>idsldap &gt; db2 describe table IIRUSERATTRIB8 db2 describe table IIRUSERATTRIB8 Data type Column Column name schema Data type name Length Scale Nulls ------------------------------- --------- ------------------- ---------- ----- ------ EID SYSIBM INTEGER 4 0 No IIRUSERATTRIB8 SYSIBM VARCHAR 384 0 No IIRUSERATTRIB8_T SYSIBM VARCHAR 240 0 No RIIRUSERATTRIB8_T SYSIBM VARCHAR 240 0 No 4 record(s) selected. </pre><p>La longueur de la colonne a bien été augmentée à 384 caractères.</p> <p>DB2 ajoute des colonnes *_T qui sont utilisées pour la recherche et l'indexation.</p> <p>La colonne R[attribute_name]_T est la chaîne de caractère renversée et tronquée à 240, pour les filtres de recherche qui sont de la forme "attribut=*valeur".</p> <h2>Références IBM</h2> <ul> <li><a href="http://www-01.ibm.com/support/docview.wss?rs=767&amp;uid=swg21397049">http://www-01.ibm.com/support/docview.wss?rs=767&amp;uid=swg21397049</a></li> <li><a href="http://www-01.ibm.com/support/docview.wss?uid=swg21403693">http://www-01.ibm.com/support/docview.wss?uid=swg21403693</a></li> </ul> </div> <span rel="sioc:has_creator" class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/users/vincentl" typeof="schema:Person" property="schema:name" datatype="">vincentl</span></span> <span property="dc:date dc:created" content="2013-12-13T15:05:01+00:00" datatype="xsd:dateTime" class="field field--name-created field--type-created field--label-hidden">ven 13/12/2013 - 16:05</span> <div class="field field--name-field-categorie field--type-entity-reference field--label-above"> <div class="field__label">Catégorie</div> <div class="field__item"><a href="/cat%C3%A9gorie/iam" hreflang="fr">IAM</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tag</div> <div class="field__items"> <div class="field__item"><a href="/tags/itds" hreflang="fr">itds</a></div> </div> </div> <section class="field field--name-comment-node-blog field--type-comment field--label-hidden comment-wrapper"> </section> Fri, 13 Dec 2013 15:05:01 +0000 vincentl 82 at https://www.vincentliefooghe.net https://www.vincentliefooghe.net/content/itds-modification-la-longueur-dun-attribut#comments Plantage ITDS sur certaines transactions ITIM https://www.vincentliefooghe.net/content/plantage-itds-sur-certaines-transactions-itim <span class="field field--name-title field--type-string field--label-hidden">Plantage ITDS sur certaines transactions ITIM</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Gros problème ces temps-ci, alors qu'on voulait démarrer en production : lors de certaines opérations dans ITIM, l'annuaire ITDS crash sans message dans ses logs. J'avais déjà remarqué des soucis relativement similaires sur notre plate-forme de développement, que j'avais mis sur le compte de mises à jour nombreuses et pas forcément très carrées...</p> <p>Lorsque l'annuaire s'arrête, on n'a aucun message dans son fichier <em>ibmslapd.log</em>. Par contre, on constate dans le fichier <em>/var/log/messages</em> :</p> <pre>Mar 27 13:59:59 lnxfr99720434 kernel: ibmslapd[1999]: segfault at 0000000000000040 rip 00002b568d7e08ec rsp 00000000434342c0 error 4 </pre><p>Ceci n'arrive que pour certains recherches. Par exemple la recherche d'utilisateurs sur leur code XX* donne bien la liste des utilisateurs donc le matricule commence par XX. La même recherche sur * fait crasher l'annuaire.</p> <p>L'audit a été mis en place sur ITDS, mais aucune erreur n'est remontée. On voit passer la requête incriminée, sans autre détail.</p> <h2>Diagnostic du problème</h2> <p>Après quelques recherche sur le web, je suis tombé sur un article qui m'a mis sur la piste. Référence : <a href="http://www-01.ibm.com/support/docview.wss?uid=swg21499819">http://www-01.ibm.com/support/docview.wss?uid=swg21499819</a></p> <p>Il donne notamment des pistes pour diagnostiquer le problème.</p> <h3>Lancement de ITDS en mode console</h3> <p>On lance ITDS en mode console, ce qui permettra peut-être d'avoir plus d'informations lors du crash :</p> <pre>/opt/ibm/ldap/V6.2/sbin/ibmslapd -I idsldap -c ... GLPSRV048I Started 15 worker threads to handle client requests. /opt/ibm/ldap/V6.2/sbin/ibmslapd[1101]: eval: line 1: 22892: Memory fault </pre><p>Effectivement, lorsque ITDS s'arrête brutalement on a une indication supplémentaire : il s'agit d'un problème mémoire.</p> <h3>Vérification de la mémoire et de l'environnement</h3> <pre>cat /proc/meminfo MemTotal: 24659144 kB MemFree: 8321348 kB </pre><p>Il reste 8 Go de RAM libre. Donc pas de souci côté O.S.</p> <pre>$ idsilist -a Directory server instances: -------------------------------------- Instance 1: Name: idsldap Version: 6.2 Location: /product/ldap Description: IBM Tivoli Directory Server Instance V6.2 IP Addresses: All available Port: 389 Secure Port: 636 Admin Server Port: 3538 Admin Server Secure Port: 3539 Type: Directory Server </pre><p>Une seule instance LDAP, en version 6.2.</p> <h3>Génération d'un core Dump</h3> <p>Nous allons tenter de générer un <em>core dump</em>, pour analyser le problème. Les variables d'environnement sont positionnées pour générer le fichier de <em>dump</em>, et on effectue la transaction ITIM qui pose problème :</p> <pre>ulimit -c unlimited ulimit -Sc unlimited /opt/ibm/ldap/V6.2/sbin/ibmslapd -I idsldap -c .../... GLPCOM003I Non-SSL port initialized to 389. GLPRPL137I Restricted Access to the replication topology is set to false. GLPSRV098I Directory server audit logging started. GLPSRV009I 6.2.0.3 server started. GLPRPL136I Replication conflict resolution mode is set to true. GLPSRV048I Started 15 worker threads to handle client requests. /opt/ibm/ldap/V6.2/sbin/ibmslapd[1101]: eval: line 1: 25475: Memory fault(coredump) Core dump generated : /product/ldap/idsslapd-idsldap/workdir/core.1856 </pre><p>Le problème a bien généré un fichier, que l'on va pouvoir analyser.</p> <h3>Analyse du core dump</h3> <p>L'analyse nécessite l'installation de <em>gdb</em>. Sur notre plate-forme CentOS / RedHat, ceci se fait par un</p> <pre># yum install gdb </pre><p>L'analyse du fichier <em>dump</em> se fait via la commande :</p> <pre># cd /product/ldap/idsslapd-idsldap/workdir # gdb /opt/ibm/ldap/V6.2/sbin/64/ibmslapd core.1856 Core was generated by `/opt/ibm/ldap/V6.2/sbin/64/ibmslapd -I idsldap -c'. Program terminated with signal 11, Segmentation fault. #0 0x00002b568d7e08ec in attr_cache_complete_complex_filter_resolution(vec_base**, vec_base**, int, filter*) () from /opt/ibm/ldap/V6.2/lib64/libback-rdbm.so </pre><p>Le problème est donc lié à la librairie du back-end DB2, dans une fonction qui semble liée à un cache d'attributs...</p> <h2>Détermination de la cause</h2> <p>Les problèmes sont survenus suite à une séance d'optimisation des performances. En suivant les indications du document de <em>tuning</em> IBM, certains paramètres ITDS ont été modifiés.</p> <p>Dans le fichier de configuration de l'instance LDAP <em>ibmslapd.conf</em>, le cache d'attribut était positionné en Auto Adjust, suite aux optimisations réalisées sur la plate-forme, via les scripts ITIM :</p> <pre>ibm-slapdCachedAttributeAutoAdjust: TRUE ibm-slapdCachedAttributeSize: 262144 </pre><p>En modifiant l'auto-ajustement à FALSE, on résout le problème :</p> <pre>ibm-slapdCachedAttributeAutoAdjust: FALSE ibm-slapdCachedAttributeSize: 262144 </pre><p>Ce paramétrage était issu du document : <em>IBM - Performance Tuning and Capacity Planning Guide - Tivoli Directory Server - Version 6.3</em>, page 17. Je cite :</p> <p><em>For automatic attribute caching for the directory database:</em></p> <pre>dn: cn=Directory, cn=RDBM Backends, cn=IBM Directory, cn=Schemas, cn=Configuration changetype: modify replace: ibm-SlapdCachedAttributeSize ibm-SlapdCachedAttributeSize: 262144 - replace: ibm-slapdCachedAttributeAutoAdjust ibm-slapdCachedAttributeAutoAdjust: TRUE </pre><p> </p> <h2>Conclusion</h2> <p>L'optimisation des performances est à manier avec précaution... Et même en suivant les recommandations de l'éditeur, il convient de tester par la suite et de noter les changements réalisés.</p> <p>Ceci est d'autant plus bizarre que les requêtes, passées via un ldapbrowser, se passaient correctement, et que d'autres opérations dans la console ITIM ne renvoyaient pas d'erreur.</p> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/users/vincentl" typeof="schema:Person" property="schema:name" datatype="">vincentl</span></span> <span class="field field--name-created field--type-created field--label-hidden">mer 27/03/2013 - 15:57</span> <div class="field field--name-field-categorie field--type-entity-reference field--label-above"> <div class="field__label">Catégorie</div> <div class="field__item"><a href="/cat%C3%A9gorie/iam" hreflang="fr">IAM</a></div> </div> <div class="field field--name-field-tags field--type-entity-reference field--label-above"> <div class="field__label">Tag</div> <div class="field__items"> <div class="field__item"><a href="/tags/itds" hreflang="fr">itds</a></div> <div class="field__item"><a href="/tags/probl%C3%A8mes" hreflang="fr">problèmes</a></div> <div class="field__item"><a href="/tags/crash" hreflang="fr">crash</a></div> </div> </div> <section class="field field--name-comment-node-book field--type-comment field--label-hidden comment-wrapper"> </section> Wed, 27 Mar 2013 14:57:46 +0000 vincentl 66 at https://www.vincentliefooghe.net