Planification des aspects technique de la mise en œuvre d'Identity Manager


Réplication des objets dont Identity Manager a besoin sur le serveur

Lors de votre planification, vérifiez que certains objets eDirectory sont répliqués sur les serveurs sur lesquels vous voulez exécuter les pilotes DirXML.

Vous pouvez utiliser les répliques filtrées, tant que tous les objets et attributs dont le pilote a besoin pour lire ou synchroniser sont inclus dans les répliques filtrées.

N'oubliez pas que vous devez attribuer à l'objet pilote DirXML des droits eDirectory suffisants sur les objets qu'il doit synchroniser, soit en attribuant explicitement des droits soit en rendant la sécurité de l'objet Pilote équivalente à un objet qui dispose des droits souhaités.

Un serveur eDirectory qui exécute un pilote DirXML (ou auquel le pilote fait référence, si vous utilisez le chargeur distant) doit contenir une réplique principale ou une réplique en lecture/écriture des éléments suivants :


Gestion des utilisateurs sur différents serveurs avec le filtrage d'étendue

Le filtrage d'étendue signifie que vous ajoutez des règles à chaque pilote pour limiter l'étendue des opérations du pilote sur des conteneurs spécifiques. Voici deux situations dans lesquelles vous devrez utiliser le filtrage d'étendue :

Voici un exemple de l'utilisation du filtrage d'étendue.

L'illustration suivante montre une arborescence avec trois conteneurs qui contiennent des utilisateurs : Marketing, Finance et Développement. Elle montre également un conteneur Identity Manager qui contient les ensembles de pilotes. Chacun de ces conteneurs représente une partition distincte.


Exemple d'arborescence pour le filtrage d'étendue

Dans cet exemple, l'administrateur eDirectory dispose de deux serveurs eDirectory, le serveur A et le serveur B, représentés dans l'illustration suivante. Aucun serveur ne contient de copie de tous les utilisateurs. Chaque serveur contient deux des trois partitions ; il y a donc un chevauchement dans l'étendue de ce que les serveurs contiennent.

L'administrateur veut que tous les utilisateurs de l'arborescence soient synchronisés par le pilote GroupWise, mais ne veut pas de répliques regroupés d'utilisateurs sur un seul serveur. Il choisit plutôt d'utiliser deux instances du pilote GroupWise, une sur chaque serveur. Il installe Identity Manager et configure le pilote GroupWise sur chaque serveur eDirectory.

Le serveur A contient des répliques des conteneurs Marketing et Finance. Le serveur comporte également une réplique du conteneur Gestion des identités, qui contient l'ensemble de pilotes du serveur A et l'objet Pilote GroupWise du serveur A.

Le serveur B contient des répliques des conteneurs Développement et Finance ; le conteneur Gestion des identités contient l'ensemble de pilotes du serveur B et l'objet Pilote GroupWise du serveur B.

Le serveur A et le serveur B contiennent tous deux une réplique du conteneur Finance. Les deux serveurs contiennent donc l'utilisateur JBassad, qui se trouve dans le conteneur Finance. Sans filtrage d'étendue, le pilote GroupWise du serveur A et le pilote GroupWise du serveur B synchroniseraient JBassad.


Deux serveurs avec des répliques chevauchantes, sans filtrage d'étendue

L'illustration suivante montre que le filtrage d'étendue empêche les deux instances du pilote de gérer le même utilisateur ; en effet, il définit quel pilote synchronise chaque conteneur.


Le filtrage d'étendue définit quel pilote synchronise chaque conteneur.

Voici un exemple de la manière de créer une règle pour le filtrage d'étendue. Placez la règle dans la feuille de style Transformation d'événement du canal Abonné.

<xsl:transform 	version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:jstring="http://www.novell.com/nxsl/java/java.lang.String"
exclude-result-prefixes="jstring">

<!--
To select different containers for scoping, add/delete/modify the <value>
elements in the body of the variable "in-scope-containers-rtf"

Note that if the container is not in the root of the tree, then the DN
(minus the tree name) of the container must be specified, e.g.,
Corporate\Executives

Note: THESE MUST BE ENTERED IN THE TABLE AS ALL UPPERCASE
-->

<xsl:variable name="in-scope-containers-rtf">
<value>CORPORATE\USERS\ACTIVE</value>
<value>CORPORATE\USERS\INACTIVE</value>
</xsl:variable>
<xsl:variable name="in-scope-containers" select="document('')/xsl:transform/xsl:variable[@name='in-scope-containers-rtf']/value"/>

<!--
"identity" transformation - copies unchanged everything not explicitly
matched by other templates
-->

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<!-- throw away events that are out of scope -->

<xsl:template match="input/*[@src-dn]">
<xsl:variable name="in-scope">
<xsl:call-template name="in-scope"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="$in-scope = '1'">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:message>
<status level="warning">Operation vetoed by Event Transformation
Rule - out of scope</status>
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<!--
check to see if an object is in the scope defined by the variable
"in-scope-containers"
-->

<xsl:template name="in-scope">
<!-- validate that the container is in scope -->
<xsl:variable name="src-dn" select="substring-after(substring-after(@src-dn,'\'),'\')"/>
<xsl:variable name="src-dn-i" select="jstring:lastIndexOf($src-dn,'\')"/>
<xsl:if test="$src-dn-i != -1">
<xsl:variable name="src-dn-container" select="jstring:substring($src-dn, 0, $src-dn-i)"/>

<!--
the following test takes advantage of the XPath existential
quantification semantics:
basically, if one node in the node-set has a string value that matches
the string, then the statement is true
-->

<xsl:if test="jstring:toUpperCase($src-dn-container) = $in-scope-containers">
<xsl:value-of select="'1'"/>
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:transform>