Téléchargement des produits


Version anglaise


 

Paramétrage du module

Le LdapLoginModule  permet de déléguer la validation des crédentials à un serveur LDAP.

 

Extrait du fichier wagon.xml :

<realm name="adelia" loginModuleName="LdapLoginModule" className="com.hardis.adelia.cloud.security.realms.BasicRealm"/>
<loginModules>
  <loginModule name="LdapLoginModule" className="com.hardis.adelia.cloud.security.loginmodules.ldap.LdapLoginModule">
    <parameters>
        <!-- connections informations -->
        <!-- AD, Domino ou ldap -->
        <item key="type" value="AD" /> 
        <item key="connectionsURL" value="adserver.domain.com:636" /> 
        <item key="connectionName" value="domain\user" />
        <item key="connectionPassword" value="password" />
        <item key="connectionTimeout" value="5000" />
        <item key="connectionPoolSize" value="10" />
        <item key="useSSL" value="true" />

        <!-- user query informations -->
        <item key="userBase" value="DC=domain,DC=com" />
        <item key="userSearch" value="|(sAMAccountName={0})(mail={0})" /> 
        <item key="userSearchScope" value="SUB" /> 
        <item key="userName" value="sAMAccountName" />
        <item key="userAttributes" value="mail,name,sn" /> 
        <item key="userAttributesSearchAsUser" value="true"/>   

        <!-- user groups query informations -->
        <item key="groupBase" value="DC=domain,DC=com" />
        <item key="groupSearch" value="(member={0})" />
        <item key="groupSearchScope" value="SUB" /> 
        <item key="groupSearchAsUser" value="true"/>
        <item key="groupName" value="cn" />
        <item key="roles-mapping" value="role1=group1|group2|group3;rol2=groupe4" />
        <item key="maxLoginAttempts" value="5" />
    </parameters>
</loginModule>

 

Détail des paramètres :

 

connectionsURL est l'URL du LDAP, connectionName (login) et connectionPassword (password) les informations nécessaires pour se connecter au LDAP.


userBase indique l'emplacement où sont stockés les utilisateurs, userSearch la commande LDAP à utiliser pour trouver un utilisateur à partir de son login {0} et userName le nom de l'attribut à utiliser pour le nom de l'utilisateur.

 

userAttributes permet, selon les besoins, de récupérer des informations sur l'utilisateur authentifié autres que le nom. Les attributs sont ajoutés aux informations liées à l'utilisateur et accessibles via la fonction VaToolBxCloudGetUserAttribute().

 

userSearchScope indique la portée de la recherche (BASE, ONE, SUB, SUBORDINATE_SUBTREE). La valeur par défaut est SUB (recherche récursive).

 

userAttributesSearchAsUser indique si la recherche des attributs de l'utilisateur doit être exécutée sous l'identité de l'utilisateur à authentifier (par défaut, true) ou en utilisant le profil de connexion au LDAP (connectionName).


groupBase, groupSearch et groupName permettent de retrouver les groupes dans lesquels figure l'utilisateur.

 

groupSearchScope indique la portée de la recherche (BASE, ONE, SUB, SUBORDINATE_SUBTREE). Si le paramètre n'est pas spécifié, la valeur de userSearchScope est utilisée.

 

groupSearchAsUser indique si la recherche des groupes doit être exécutée sous l'identité de l'utilisateur à authentifier (par défaut, true) ou en utilisant le profil de connexion au LDAP (connectionName).

 

roles-mapping permet le mappage des rôles définis par l'application et le nom du groupe (issu de groupName=cn). L'API VaToolBxCloudIsUserInRole() permet de vérifier si l'utilisateur dispose d'un rôle.

 

 

La portée de recherche (userSearchScope, groupSearchScope) indique comment la recherche doit être exécutée dans l'arbre LDAP (récursivité). Les valeurs possibles sont :

BASE

Seul l'objet ciblé par la recherche est considéré.

ONE

Seuls l'objet ciblé par la recherche et ses descendants immédiats sont considérés.

SUB

L'objet ciblé par la recherche et ses tous ses descendants sont considérés.

SUBORDINATE_SUBTREE

Tous les descendants de l'objet ciblé par la recherche sont considérés mais l'objet lui-même est exclu.

 

 

Pour lire les attributs de l'utilisateur vous pouvez utiliser la fonction de VaToolBx "VaToolBxCloudGetUserAttribute" :

ALPHA(250)
value

APPELER_DLL VaToolBox 'VaToolBxCloudGetUserAttribute' 'attr' value 250



Pour tester les rôles de l'utilisateur vous pouvez utiliser la fonction de VaToolBx "VaToolBxCloudIsUserInRole" :

BOOL allowed
 APPELER_DLL VaToolBox 'VaToolBxCloudIsUserInRole' 'internal' allowed

N.B. : il est possible d'indiquer dans l'élément "parameters" un attribut optionnel "substituteValues" (type booléen, valeur par défaut : false).

 

Si cet attribut est présent et est égal à "true", la syntaxe ${VARIABLE} sera remplacée dans la valeur des paramètres (attribut "value" des éléments "item") par la valeur de la propriété système Java "VARIABLE" si elle est définie (par exemple via -DVARIABLE=valeur sur la ligne de commandes java).

La valeur restera inchangée si la propriété système n'existe pas.

 

Dans l'exemple suivant :

<parameters substituteValues="true">
    ...
    <item key="connectionName" value="${LDAP_USER}" />
    <item key="connectionPassword" value="${LDAP_PASSWORD}" />
    ...
</parameters>

 

Les paramètres "connectionName" et "connectionPassword" seront substitués lors de l'exécution par les paramètres indiqués sur la ligne de commandes (-DLDAP_USER=username -DLDAP_PASSWORD=password).

 


Exemple: ActiveDirectory


Extrait de wagon.xml :

<realm name="adelia" loginModuleName="LdapLoginModule" className="com.hardis.adelia.cloud.security.realms.BasicRealm"/>
<loginModules>
  <loginModule name="LdapLoginModule" className="com.hardis.adelia.cloud.security.loginmodules.ldap.LdapLoginModule">
    <parameters>
        <!-- connections informations -->
        <item key="type" value="AD" /> 
        <item key="connectionsURL" value="adserver.domain.com:636" /> 
        <item key="connectionName" value="domain\user" />
        <item key="connectionPassword" value="password" />
        <item key="connectionTimeout" value="5000" />
        <item key="connectionPoolSize" value="10" />
        <item key="useSSL" value="true" />

        <!-- user query informations -->
        <item key="userBase" value="DC=domain,DC=com" />
        <item key="userSearch" value="|(sAMAccountName={0})(mail={0})" /> 
        <item key="userSearchScope" value="SUB" /> 
        <item key="userName" value="sAMAccountName" />
        <item key="userAttributes" value="mail,name,sn" /> 
        <item key="userAttributesSearchAsUser" value="true"/>   

        <!-- user groups query informations -->
        <item key="groupBase" value="DC=domain,DC=com" />
        <item key="groupSearch" value="(member={0})" />
        <item key="groupSearchScope" value="SUB" /> 
        <item key="groupSearchAsUser" value="true"/>
        <item key="groupName" value="cn" />
        <item key="roles-mapping" value="internal=Utilisateurs du domaine" />
        <item key="maxLoginAttempts" value="5" />
    </parameters>
</loginModule>


Dans cet exemple, la recherche se fait dans un serveur de type Active Directory (AD) sur l'attribut "sAMAccountName" ou "mail" des objets de l'arborescence "DC=domain,DC=com".

 

*USER prend la valeur de l'attribut "sAMAccountName" de l'utilisateur, les attributs "mail", "name" et "sn" sont récupérés dans les attributs utilisateurs.

 

Le rôle Adélia "internal" est associé au groupe "Utilisateurs du domaine" (<item key="roles-mapping" value="internal=Utilisateurs du domaine" />).

 


Exemple: IBM Domino


Extrait de wagon.xml :

<realm name="adelia" loginModuleName="LdapLoginModule" className="com.hardis.adelia.cloud.security.realms.BasicRealm"/>
<loginModules>
  <loginModule name="LdapLoginModule" className="com.hardis.adelia.cloud.security.loginmodules.ldap.LdapLoginModule">
    <parameters>
        <!-- connections informations -->
        <item key="type" value="Domino" /> 
        <item key="connectionsURL" value="adserver.domain.com:636" /> 
        <item key="connectionName" value="user" />
        <item key="connectionPassword" value="password" />
        <item key="connectionTimeout" value="5000" />
        <item key="connectionPoolSize" value="10" />
        <item key="useSSL" value="false" />

        <!-- user query informations -->
        <item key="userBase" value="o=domain" />
        <!-- search objectclass dominoPerson and uid   -->
        <item key="userSearch" value="(&amp;(uid={0})(objectclass=dominoPerson))" /> 
        <item key="userSearchScope" value="SUB" /> 
        <item key="userName" value="sn" />
        <item key="userAttributes" value="mail,name,sn" /> 
        <item key="userAttributesSearchAsUser" value="true"/>   

        <!-- user groups query informations -->
        <item key="groupBase" value="o=domain" />
        <item key="groupSearch" value="(member={0})" />
        <item key="groupSearchScope" value="SUB" /> 
        <item key="groupSearchAsUser" value="true"/>
        <item key="groupName" value="cn" />
        <item key="roles-mapping" value="role1=group1|group2|group3;role2=groupe4" />
        <item key="maxLoginAttempts" value="5" />
    </parameters>
</loginModule>


Dans cet exemple, la recherche se fait dans un serveur de type IMB Domino (Domino) sur l'attribut "uid" des objets de l'arborescence "o=domain" de type "dominoPerson".

 

*USER prend la valeur de l'attribut "sn" de l'utilisateur, l'attribut "mail" est récupéré dans les attributs utilisateurs.

 


Exemple: OpenLdap


Extrait de wagon.xml :

<realm name="adelia" loginModuleName="LdapLoginModule" className="com.hardis.adelia.cloud.security.realms.BasicRealm"/>
<loginModules>
  <loginModule name="LdapLoginModule" className="com.hardis.adelia.cloud.security.loginmodules.ldap.LdapLoginModule">
    <parameters>
        <!-- connections informations -->
        <item key="type" value="ldap" /> 
        <item key="connectionsURL" value="adserver.domain.com:636" /> 
        <item key="connectionName" value="user" />
        <item key="connectionPassword" value="password" />
        <item key="connectionTimeout" value="5000" />
        <item key="connectionPoolSize" value="10" />
        <item key="useSSL" value="false" />

        <!-- user query informations -->
        <item key="userBase" value="dc=domain,dc=com" />
        <!-- search cn, sn or mail -->
        <item key="userSearch" value="((|(cn={0})(sn={0})(mail={0}))" /> 
        <item key="userSearchScope" value="SUB" /> 
        <item key="userName" value="uid" />
        <item key="userAttributes" value="mail" /> 
        <item key="userAttributesSearchAsUser" value="false"/>   

        <!-- user groups query informations -->
        <item key="groupBase" value="dc=domain,dc=com" />
        <item key="groupSearch" value="(member={0})" />
        <item key="groupSearchScope" value="SUB" /> 
        <item key="groupSearchAsUser" value="true"/>
        <item key="groupName" value="cn" />
        <item key="roles-mapping" value="role1=group1|group2|group3;role2=groupe4" />
        <item key="maxLoginAttempts" value="5" />
    </parameters>
</loginModule>


Dans cet exemple, la recherche se fait dans un serveur de type Open LDAP (ldap) sur l'attribut "cn", "sn" ou "mail" des objets de l'arborescence "dc=domain,dc=com".

 

*USER prend la valeur de l'attribut "uid" de l'utilisateur, l'attribut "mail" est récupéré dans les attributs utilisateurs.

↑ Haut de page

  • Aucune étiquette