mirror of
https://gitlab.easter-eggs.com/ee/ldapsaisie.git
synced 2024-11-25 19:33:00 +01:00
338 lines
13 KiB
XML
338 lines
13 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<!-- Début LSprofiles -->
|
|
<sect4 id='config-LSprofile'>
|
|
<title>Profils d'utilisateurs</title>
|
|
|
|
<para>Cette section décrit la manière dont sont définis les profils d'utilisateurs
|
|
se connectant à l'interface appelés <emphasis>LSprofile</emphasis>. Il est possible
|
|
d'attribuer un profil à l'utilisateur connecté sur tout ou partie de l'annuaire LDAP.
|
|
</para>
|
|
|
|
<sect5 id='config-LSprofile-default'>
|
|
<title>Profils d'utilisateurs par défaut</title>
|
|
<para>Il existe des profils d'utilisateurs par défaut, non liée à la configuration de
|
|
l'application:
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>user</term>
|
|
<listitem>
|
|
<simpara>Tous les utilisateurs connectés à l'utilisateur. Ce &LSprofile; est valide sur l'ensemble de l'annuaire.</simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>self</term>
|
|
<listitem>
|
|
<simpara>L'utilisateur connecté sur son objet correspondant dans l'annuaire. Ce &LSprofile; est utile pour donner des
|
|
droits à l'utilisateur sur lui-même.</simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>nom du type de l'objet connecté</term>
|
|
<listitem>
|
|
<simpara>Un &LSprofile; du nom du type d'objet utilisateur connecté est automatiquement ajouté à l'utilisateur.
|
|
Ainsi, si l'utilisateur connecté est un &LSobject; <literal>LSpeople</literal> par exemple, il aura le &LSprofile;
|
|
<literal>LSpeople</literal> sur tous l'annuaire. Ce &LSprofile; est utile pour donner des droits à tous un type
|
|
d'objets pouvant se connecter à l'application (par exemple, tous les utilisateurs applicatifs).</simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
|
|
</sect5>
|
|
|
|
<sect5 id='config-LSprofile-custom'>
|
|
<title>Profils d'utilisateurs personalisés</title>
|
|
<para>Il est possible de définir autant de profils d'utilisateurs que l'on souhaite. Pour chaque profil
|
|
d'utilisateur personnalisé, il faudra définir dans quelles parties de l'annuaire ce profil existe (Exemple :
|
|
les admistrateurs de groupes existent uniquement dans la branche de l'annuaire stockant les groupes). Enfin
|
|
pour chaque partie de l'annuaire, il faudra définir la manière d'identifier si l'utilisateur qui se connecte
|
|
appartient à ce profil.</para>
|
|
|
|
<programlisting linenumbering="unnumbered">
|
|
<citetitle>Structure</citetitle>...
|
|
<![CDATA['LSprofile' => array (
|
|
[nom d'un LSprofile] => array (
|
|
[label] => [label du LSprofile],
|
|
[basedn] => [dn utilisateur],
|
|
[autre basedn] => array (
|
|
[dn d'un utilisateur] => NULL,
|
|
[autre dn] => array ( // via un listage de l'attribut d'un objet
|
|
'attr' => [nom de l'attribut clé de l'objet],
|
|
'attr_value' => [format de la valeur de l'attribut clé],
|
|
'LSobject' => [nom du type LSobject de l'objet]
|
|
)
|
|
),
|
|
'LSobjects' => array ( // via une liste d'objet sur lequel l'utilisateur a des pouvoirs
|
|
[nom du LSobject] => array (
|
|
'attr' => [nom de l'attribut clé],
|
|
'attr_value' => [format de la valeur de l'attribut clé],
|
|
// ou
|
|
'filter' => [format du filtre de recherche],
|
|
|
|
'basedn' => [basedn de recherche],
|
|
'params' => [configuration de la recherche]
|
|
),
|
|
[nom quelconque] => array (
|
|
'filters' => array(
|
|
array(
|
|
'LSobject' => [nom du LSobject],
|
|
'attr' => [nom de l'attribut clé],
|
|
'attr_value' => [format de la valeur de l'attribut clé],
|
|
// ou
|
|
'filter' => [format du filtre de recherche],
|
|
|
|
'basedn' => [basedn de recherche],
|
|
'params' => [configuration de la recherche]
|
|
),
|
|
),
|
|
),
|
|
...
|
|
)
|
|
),
|
|
...
|
|
),]]>
|
|
...
|
|
</programlisting>
|
|
|
|
<para>
|
|
Le paramètre <varname>LSprofiles</varname> est un tableau associatif contenant,
|
|
en valeur clé, le nom d'un <emphasis>LSprofile</emphasis> et en valeur associée,
|
|
la configuration nécessaire pour déterminer si l'utilisateur connecté appartient
|
|
à ce LSprofile pour tout ou partie de l'annuaire.
|
|
</para>
|
|
|
|
<para>
|
|
Dans chaque configuration de <emphasis>LSprofile</emphasis>, il est possible
|
|
d'identifier l'appartenance ou non de l'utilisateur connecté de deux manières :
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
|
|
<!-- D - Pour basedn -->
|
|
<listitem>
|
|
<para>Pour une branche de l'annuaire donnée (<emphasis>basedn</emphasis>) :
|
|
en listant les utilisateurs appartenant à ce <emphasis>LSprofile</emphasis> pour
|
|
tous les objets de la branche. Il sera possible de lister les utilisateurs dont
|
|
on connait le <emphasis>DN</emphasis> ou de lister les utilisateurs appartenant
|
|
à une liste stockée dans l'annuaire (par exemple la liste des membres d'un
|
|
groupe).</para>
|
|
|
|
<!-- D - Cas pour basedn -->
|
|
<itemizedlist>
|
|
|
|
<!-- D - Liste de DNs -->
|
|
<listitem>
|
|
<simpara>Liste des DNs d'utilisateurs :</simpara>
|
|
<programlisting linenumbering="unnumbered">
|
|
<citetitle>Structure</citetitle>...
|
|
<![CDATA['LSprofile' => array (
|
|
[nom du LSprofile] => array (
|
|
[basedn] => [dn utilisateur],
|
|
// ou si plusieurs DNs
|
|
[autre basedn] => array (
|
|
[dn d'un utilisateur] => NULL,
|
|
[dn d'un utilisateur 2] => NULL
|
|
),
|
|
...
|
|
),
|
|
...
|
|
),]]>
|
|
...
|
|
</programlisting>
|
|
<simpara>Explication : Pour un <emphasis>LSprofile</emphasis> et un
|
|
<emphasis>basedn</emphasis> donnés, on définit l'utilisateur appartenant au
|
|
<emphasis>LSprofile</emphasis> en donnant son <emphasis>DN</emphasis>. Si on
|
|
souhaite lister plusieurs utilisateurs, on utilise un tableau associatif dans
|
|
lequel les clés sont les <emphasis>DNs</emphasis> des utilisateurs et les valeurs
|
|
associées sont toutes <emphasis>NULL</emphasis>.</simpara>
|
|
</listitem>
|
|
<!-- F - Liste de DNs -->
|
|
|
|
<!-- D - Liste stocké -->
|
|
<listitem>
|
|
<simpara>Liste d'utilisateurs stockée dans l'annuaire :</simpara>
|
|
<programlisting linenumbering="unnumbered">
|
|
<citetitle>Structure</citetitle>...
|
|
<![CDATA['LSprofile' => array (
|
|
[nom du LSprofile] => array (
|
|
[basedn] => array (
|
|
[DN d'un object] => array (
|
|
'attr' => [nom de l'attribut clé de l'objet],
|
|
'attr_value' => [format de la valeur de l'attribut clé],
|
|
'LSobject' => [nom du type LSobject de l'objet]
|
|
)
|
|
),
|
|
...
|
|
),]]>
|
|
...
|
|
</programlisting>
|
|
<simpara>Explication : Pour un <emphasis>LSprofile</emphasis> et un
|
|
<emphasis>basedn</emphasis> donnés, on liste les utilisateurs du
|
|
<emphasis>LSprofile</emphasis> référencés dans l'attribut <varname>attr</varname>
|
|
de l'object de type <varname>LSobject</varname> et selon le format de valeur
|
|
décrit dans <varname>attr_value</varname>.</simpara>
|
|
</listitem>
|
|
<!-- F - Liste stocké -->
|
|
|
|
</itemizedlist>
|
|
<!-- F - Cas pour basedn -->
|
|
|
|
</listitem>
|
|
<!-- F - Pour basedn -->
|
|
|
|
<!-- D - Pour LSobject -->
|
|
<listitem>
|
|
<simpara>Pour un type de <emphasis>LSobject</emphasis> donné : en listant
|
|
les objets pour lesquels l'utilisateur aura les droits du LSprofile. Il sera
|
|
possible, à travers une recherche paramétrable dans l'annuaire, de lister les
|
|
objets pour lesquels l'utilisateur appartiendra au
|
|
<emphasis>LSprofile</emphasis>.</simpara>
|
|
<programlisting linenumbering="unnumbered">
|
|
<citetitle>Structure</citetitle>...
|
|
<![CDATA['LSprofile' => array (
|
|
[nom d'un LSprofile] => array (
|
|
'LSobjects' => array ( // via un liste d'objet pour lequel l'utilisateur
|
|
// appartient au LSprofile
|
|
[nom du LSobject] => array (
|
|
'attr' => [nom de l'attribut clé],
|
|
'attr_value' => [format de la valeur de l'attribut clé],
|
|
// or
|
|
'filter' => [format du filtre de recherche],
|
|
|
|
'basedn' => [format du basedn de recherche],
|
|
'params' => [configuration de la recherche]
|
|
),
|
|
array (
|
|
'filters' => array(
|
|
array(
|
|
'LSobject' => [nom du LSobject],
|
|
'attr' => [nom de l'attribut clé],
|
|
'attr_value' => [format de la valeur de l'attribut clé],
|
|
// ou
|
|
'filter' => [format du filtre de recherche],
|
|
|
|
'basedn' => [format du basedn de recherche],
|
|
'params' => [configuration de la recherche]
|
|
),
|
|
),
|
|
),
|
|
...
|
|
)
|
|
),
|
|
...
|
|
),]]>
|
|
...
|
|
</programlisting>
|
|
<para>Explications : Dans la configuration d'un <emphasis>LSprofile</emphasis>,
|
|
la valeur clé <emphasis>LSobjects</emphasis> signifie qu'on est dans un cas de la
|
|
délégation de droits sur des types d'LSobject. Dans ce tableau associatif, il
|
|
est possible de définir un ou plusieurs types de LSobject pour lesquels on délègue
|
|
des droits via des recherches simples ou enchaînées. Le fonctionnement simple
|
|
consiste à partir de l'objet de l'utilisateur et à générer un filtre et une base de
|
|
recherche sur un type de LSobject. Le fonctionnement enchainée consiste à faire
|
|
un première recherche à partir de l'objet de l'utilisateur puis à recommencer à
|
|
partir des objets trouvés en construisant une liste de filtres de recherche
|
|
pour chaque objet qui seront combinés via l'opérateur booléen
|
|
<emphasis>ou</emphasis>. Dans le cadre d'un fonctionnement enchainée, la base de
|
|
recherche est toujours générer à partir de l'objet de l'utilisateur connecté.</para>
|
|
|
|
<para>Pour configurer une délégation de type simple on mettra le nom du
|
|
LSobject dans la clé du tableau et dans la valeur un tableau définissant la
|
|
recherche. Il est possible de ne pas utiliser la clé du tableau comme nom du
|
|
LSobject grâce à la clé de configuration
|
|
<emphasis>LSobject</emphasis>.</para>
|
|
|
|
<para>Pour configurer une délégation de type enchaîné on pourra utiliser
|
|
n'importe quelle valeur unique pour la clé du tableau et pour la valeur un
|
|
tableau contenant une unique clé <emphasis>filters</emphasis>. La valeur
|
|
associée à cette clé est celle d'une délégation de type simple où la clé
|
|
<emphasis>LSobject</emphasis> est devenue obligatoire.</para>
|
|
|
|
<para>Cette configuration contient les paramètres d'une ou plusieurs recherches dans l'annuaire
|
|
en considérant que l'utilisateur connecté aura les droits du LSprofile sur les
|
|
objets retournés. Les paramètres de la recherche sont :
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>LSobject</term>
|
|
<listitem>
|
|
<simpara>C'est le nom du LSobject recherché.
|
|
<emphasis>(Paramètre facultatif pour une délégation de type simple)</emphasis></simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>attr</term>
|
|
<listitem>
|
|
<simpara>Nom de l'attribut des LSobjets contenant une valeur clé qui
|
|
permettra d'identifier l'utilisateur comme ayant droit.</simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>attr_value</term>
|
|
<listitem>
|
|
<simpara>Le format de la valeur clé prise par l'attribut <varname>attr</varname>.
|
|
Ce format est composé à partir des données de l'objet de l'utilisateur
|
|
connecté. Voir le paragraphe <link linkend="config-LSformat">Format
|
|
paramètrable</link> pour plus d'informations sur l'écriture du format.</simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>filter</term>
|
|
<listitem>
|
|
<simpara>Ce paramètre remplace les paramètres <varname>attr</varname> et
|
|
<varname>attr_value</varname>. Il est possible ici d'écrire directement le
|
|
format paramètrable du filtre recherche dans l'annuaire. Ce filtre sera
|
|
automatiquement agrémenté des conditions sur l'attribut <emphasis>objectclass</emphasis>.
|
|
Voir le paragraphe <link linkend="config-LSformat">Format paramètrable</link>
|
|
pour plus d'informations sur l'écriture du format.</simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>basedn</term>
|
|
<listitem>
|
|
<simpara>C'est le format paramétrable du <emphasis>basedn</emphasis> de la
|
|
recherche généré à partir de l'utilisateur connecté. Il est possible ainsi
|
|
de la limiter sur les LSojects d'une branche précise de l'annuaire.
|
|
Voir le paragraphe <link linkend="config-LSformat">Format paramètrable</link>
|
|
pour plus d'informations sur l'écriture du format. <emphasis>(Paramètre
|
|
facultatif)</emphasis></simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>params</term>
|
|
<listitem>
|
|
<simpara>C'est un tableau associatif contenant les paramètres étendus de la
|
|
recherche. Voir le paragraphe <link linkend="config-search-params">
|
|
Paramètres étendus des recherches dans l'annuaire</link> pour plus de détails.
|
|
<emphasis>(Paramètre facultatif)</emphasis></simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
<!-- F - Pour LSobject -->
|
|
|
|
</itemizedlist>
|
|
|
|
<para>Par ailleurs, il est possible d'attribuer un label plus explicite à chaque
|
|
<emphasis>LSprofile</emphasis> à l'aide de la clé <literal>label</literal>. Ce
|
|
label sera utilisé pour faire référence au <emphasis>LSprofile</emphasis> lorsque
|
|
nécéssaire. <emphasis>(Paramètre facultatif)</emphasis></para>
|
|
|
|
</sect5>
|
|
|
|
</sect4>
|
|
<!-- Fin LSprofiles -->
|