Fichier de configuration LDAP (ldapentry.xml)

Le fichier WCServer_enterprise_archive/xml/ldap/ldapentry.xml est utilisé lorsque HCL Commerce est configuré de manière à utiliser un serveur LDAP comme référentiel de profil maître pour les utilisateurs et les organisations. HCL Commerce intéragit avec le serveur LDAP à l'aide du référentiel fédéré de WebSphere Application Server. Le référentiel fédéré est implémenté à l'aide de VMM (Virtual Member Manager).

Le fichier ldapentry.xml assure le mappage entre les attributs HCL Commerce et les attributs VMM, afin de synchroniser les données entre la base de données HCL Commerce et LDAP. Ce fichier de mappage fournit un mappage par défaut pour les attributs les plus couramment utilisés. Les attributs peuvent être personnalisés. Pour plus d'informations, voir Liste des attributs pouvant être synchronisés avec LDAP.
Remarque : Veillez à consulter le fichier wc-server.xml pour identifier le fichier ldapentry qui est en cours d'utilisation :
  • Microsoft Active Directory : utilise généralement ldapentry_ad.xml
  • Autres serveurs LDAP : utilise généralement ldapentry.xml

Exemples de données dans le fichier ldapentry.xml


<?xml version="1.0"?>
<!DOCTYPE ldapentry SYSTEM "ldapentry.dtd">
<ldapentry>
   <entry entryName="User">
      <ldapsetting>       
              <ldaprdn rdnName="uid" keyAttrName="logonId" keyObjName="UserRegistry"/>
          </ldapsetting>
      <ldapmap>
         <map>
            <objectAttribute attrName="logonPassword"/>
            ldapAttribute name="password" operation="replace" flow="wcsToLdap"/>
         </map>
         <map>
            <objectAttribute attrName="lastName"/>
            <objectAttribute attrName="firstName"/>
            <objectSeparator attrSeparator="/"/>
            <ldapAttribute name="cn" operation="replace" flow="wcsToLdap"/>
         </map>
         <map>
            <objectAttribute attrName="lastName"/>
            <ldapAttribute name="sn" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="firstName"/>
            <ldapAttribute name="givenName" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="phone1"/>
            <ldapAttribute name="homePhone" operation="add" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="email1"/>
            <ldapAttribute name="mail" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="zipCode"/>
            <ldapAttribute name="postalCode" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="address1" size="50"/>
            <objectAttribute attrName="address2" size="50"/>
            <objectAttribute attrName="address3" size="50"/>
            <objectSeparator attrSeparator="/"/>
            <ldapAttribute name="postalAddress" operation="replace" flow="bothDirections"/>
         </map>
      </ldapmap>
   </entry>
   <entry entryName="Organization">
      <ldapsetting>   
              <ldaprdn rdnName="o" keyAttrName="orgEntityName" keyObjName="Organization"/>
          </ldapsetting>
      <ldapmap>
         <map>
            <objectAttribute attrName="businessCategory"/>
            <ldapAttribute name="businessCategory" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="description"/>
            <ldapAttribute name="description" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="address1" size="50"/>
            <objectAttribute attrName="address2" size="50"/>
            <objectAttribute attrName="address3" size="50"/>
            <objectSeparator attrSeparator="/"/>
            <ldapAttribute name="postalAddress" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="phone1"/>
            <ldapAttribute name="telephoneNumber" operation="add" flow="bothDirections"/>
         </map>
      </ldapmap>
   </entry>
   <entry entryName="OrganizationalUnit">
          <ldapsetting>                   
              <ldaprdn rdnName="ou" keyAttrName="orgEntityName" keyObjName="Organization"/>
          </ldapsetting>
      <ldapmap>
         <map>
            <objectAttribute attrName="businessCategory"/>
            <ldapAttribute name="businessCategory" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="description"/>
            <ldapAttribute name="description" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="address1" size="50"/>
            <objectAttribute attrName="address2" size="50"/>
            <objectAttribute attrName="address3" size="50"/>
            <objectSeparator attrSeparator="/"/>
            <ldapAttribute name="postalAddress" operation="replace" flow="bothDirections"/>
         </map>
         <map>
            <objectAttribute attrName="phone1"/>
            <ldapAttribute name="telephoneNumber" operation="add" flow="bothDirections"/>
         </map>
      </ldapmap>
   </entry>
</ldapentry>

Le format du fichier ldapentry.xml est le suivant :
entrée
Cet élément identifie le type de membre auquel sont destinés les mappages. Les valeurs admises sont User, Organization ou OrganizationalUnit.
ldapsetting - ldaprdn - rdnName
Indique quel attribut LDAP est l'attribut RDN (Nom Distinctif Relatif).
ldapsetting - ldaprdn - keyAttrName
Indique quel attribut HCL Commerce est mis en correspondance sur l'attribut RDN.
ldapsetting - ldaprdn - keyObjName
Indique le bean d'accès HCL Commerce qui contient l'attribut keyAttrName.
ldapsetting - ldapocs - objClass
Cette option n'est plus utilisée. Elle a été déplacée vers le fichier wimconfig.xml.
ldapsetting - ldapbase - defaultBase
Cette option n'est plus utilisée. Elle a été déplacée vers le fichier wimconfig.xml.
ldapsetting - ldapbase - searchBase
Cette option n'est plus utilisée. Elle a été déplacée vers le fichier wimconfig.xml.
map -objectAttribute - attrName
un nom d'attribut HCL Commerce. Pour plus d'informations, voir Liste des attributs pouvant être synchronisés avec LDAP.
map -ldapAttribute - name
Nom d'un attribut VMM à mettre en correspondance avec l'attribut HCL Commerce indiqué dans attrName. Le nom d'attribut VMM est généralement identique au nom d'attribut LDAP. Dans les cas où il serait différent, le mappage est défini dans l'élément attributeConfiguration du fichier wimconfig.xml.
map -ldapAttribute - flow
Indique comment la lecture et l'écriture de la valeur d'attribut s'effectue sur LDAP. Les valeurs admises sont les suivantes :
ldapToWcs
La valeur est transmise de LDAP vers la base de données HCL Commerce uniquement. Ce paramétrage est utilisé pendant l'authentification et les opérations d'extraction (get).
wcsToLdap
La valeur est transmise de la base de données HCL Commerce vers LDAP uniquement. Ce paramétrage s'applique lors de la création ou de la mise à jour d'un membre dans HCL Commerce.
bothDirections
La valeur est transmise dans les deux sens, entre la base de données HCL Commerce et LDAP.
Si HCL Commerce est utilisé pour créer ou mettre à jour une organisation à l'aide des commandes de membre, par exemple, UserRegistrationAddCmd ou OrgEntityUpdateCmd, le flux de données s'effectue de HCL Commerce vers LDAP. Lors d'une demande de lecture ou d'extraction, par exemple, au moment de la connexion ou lors du remplissage d'un bean de données, le flux de données s'effectue de LDAP vers HCL Commerce, car LDAP est considéré comme étant le maître de l'enregistrement. Cependant, les données ne sont transférées que si l'enregistrement dans LDAP a été mis à jour plus récemment que sa dernière synchronisation avec HCL Commerce. L'heure de cette dernière synchronisation est stockée dans la table WMMMAP.
ldapOnly
La valeur n'existe que sur LDAP, et non sur la base de données HCL Commerce. Ces attributs seront accessibles à partir des API suivantes :
  • UserSyncBean.getProperty(String propertyName)
  • OrganizationSyncBean.getProperty(String propertyName)
Cela les rend accessibles aux beans de données suivants :
  • UserRegistrationDataBean.getAttribute(String attributeName)
  • OrgEntityDataBean.getAttribute(String attributeName)
A leur tour, les services GetPerson et GetOrganization remplissent les objets SDO Person et Organization à l'aide des attributs suivants lors de l'utilisation du profil d'accès IBM_All :
  • /Person/Attributes
  • /Organization/Attributes
map -ldapAttribute - operation
Indique si la valeur d'attribut doit être modifiée pour LDAP. Les valeurs admises sont replace ou add. Une valeur replace met à jour les informations utilisateur en cours à l'aide des nouvelles informations fournies (par exemple, remplacement d'un numéro de téléphone existant par un nouveau numéro). Une valeur add inclut une autre entrée pour l'utilisateur (par exemple, ajout d'un nouveau numéro de téléphone aux informations utilisateur en cours, établissant ainsi une liste de numéros de téléphone pour l'utilisateur).
map - objectSeparator - attrSeparator
Séparateur utilisé lors du stockage ou de l'extraction de plusieurs attributs HCL Commerce sur ou à partir d'un seul attribut LDAP. La réplication des attributs à valeurs multiples n'est pas prise en charge.

Synchronisation des attributs LDAP à valeurs multiples avec la table MBRATTRVAL

La table MBRATTRVAL est utilisée pour le stockage des attributs de membre personnalisés. Elle peut stocker plusieurs valeurs (lignes) pour un attribut et un utilisateur uniques. LDAP peut traiter les attributs à valeurs multiples.

Par exemple :

<map>
     <objectAttribute attrName="JobFunction_10001_r_n"/>
     <ldapAttribute name="telephoneNumber" operation="replace" flow="bothDirections"/>
</map>

Mappage d'origine :

<!--
<map>
     <objectAttribute attrName="phone1"/>
     <ldapAttribute name="telephoneNumber" operation="add" flow="bothDirections"/>
</map>
-->
L'attribut VMM telephoneNumber mappe vers l'attribut JobFunction_10001_r_n HCL Commerce. Cet attribut HCL Commerce, fondé sur la convention de dénomination, est un attribut de membre personnalisé dont les valeurs sont stockées dans la table MBRATTRVAL. Il est à noter que le nom d'attribut de membre se termine par _n pour indiquer qu'il comporte plusieurs valeurs.

Si la table MBRATTRVAL contient plusieurs valeurs, celles-ci sont synchronisées avec plusieurs valeurs dans LDAP. A l'inverse, si LDAP contient plusieurs valeurs, celles-ci sont synchronisées avec plusieurs lignes dans la table MBRATTRVAL.

L'URL suivante est un exemple indiquant comment ajouter ou mettre à jour deux valeurs JobFunction pour l'utilisateur en cours :
https://localhost/webapp/wcs/stores/servlet/UserRegistrationUpdate?storeId=10101&catalogId=10101&langId=-1
&editRegistration=Y&JobFunction_10101_r_1=manager&JobFunction_10101_r_2=clerk&URL=UserRegistrationForm
Notez les deux occurrences des mises à jour JobFunction dans la chaîne URL. Le premier étant JobFunction_10101_r_1 pour le gestionnaire et le second étant JobFunction_10101_r_2 pour le vendeur.

Synchronisation des attributs LDAP à valeur unique avec le tableau MBRATTRVAL

Avec la synchronisation d'un attribut LDAP à valeur unique au tableau MBRATTRVAL, l'attribut à valeur unique doit être défini comme un attribut à valeur multiples. Par exemple, pour un attribut LDAP partyID avec une seule valeur sur LDAP :
  1. Dans le fichier XML ldapentry, le mappage serait
    <map>
    <objectAttribute attrName="partyID_10001_r_1"/>
    <ldapAttribute name="partyID" operation="replace" flow="wcsToLdap"/>
    </map> 
  2. Dans le fichier wimxmlextension.xml WebSphere Application Server, définissez le paramètre multiValuedsur true pour partyID.
    <wim:propertySchema nsPrefix="wim" 
      nsURI="http://www.ibm.com/websphere/wim" dataType="string" multiValued="true" propertyName="partyID">
         <wim:applicableEntityTypeNames>OrgContainer</wim:applicableEntityTypeNames>
    </wim:propertySchema>
  3. Définissez la valeur d'attribut de l'URL en utilisant le format suivant :
    partyID_10001_r_1=newParty
    .