Auth LDAP SCENARIsuite

Bonjour,
Je travaille sur la migration d’un SCENARIserver 4.2 vers SCENARIsuite 5.
Je cherche à transposer la configuration ldap mais j’ai un peu de mal pour le moment à aborder la configuration avec la méthode authByDn de SCserver4.2 en SCsuite 5 à partir de la documentation, je ne retrouve plus le type d’auth=simple ou la méthode authByDn.

Avez-vous des éléments qui me permettraient d’essayer ?

Merci !

Si besoin, voici la config qui marche en SCserver 4.2, mais vous n’avez pas besoin de me faire une réponse sur mesure, je peux probablement m’en sortir à partir d’une consigne générique :

/* (...)
 *      [!~~ Technique d'authentification : à ne pas changer en principe. ~~]
 *    [envContext key="java.naming.security.authentication" value="simple"/]
 *    
 *    [!~~ Application d'une regExp sur le compte du user avant transmission au Ldap. ~~]
 *    [transformAccount pattern="" replaceBy=""/]
 *    
 *      [!~~ Authentification par Search. Dans les pattern pour le baseName et la requete, possibilité de placer :
 *              {0} pour le compte d'authentification.
 *              {1} pour le mot de passe.
 *      ~~]
 *    [authBySearch searchPattern="(&(objectClass=Person)(|(sn={0})(givenName={0})))" 
 *                  baseNamePattern="o=xxx" 
 *                  checkAuthOnDnResult="true"
 *                  scope="oneLevel"] [!~~ oneLevel, subtree, object ~~]
 *        [!~~ Compte pour effectuer la recherche. ~~]
 *      [envContext key="java.naming.security.principal" value="scenariPrincipal"/]
 *        [!~~ Mot de passe pour effectuer la recherche. ~~]
 *      [envContext key="java.naming.security.credentials" value="passWord"/]
 *    [/authBySearch]
 *    
 *      [!~~ AUTRE POSSIBILITE A LA PLACE DE [authBySearch/] : Authentification directe par DN. ~~]
 *    [authByDn dnPattern="uid={0},ou=people,dc=univ,dc=fr"/]
 */

(...)
       <authMethod type="eu.scenari.userodb.authmethod.ldap.AuthMethodLdapLoader" code="remote">
                <!-- Implementation du fournisseur de context. -->
                <envContext key="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
                <!-- Url principale et alternatives pour la conection au serveur LDAP. -->
                <envContext key="java.naming.provider.url" value="ldaps://serveurldap.monuniv.fr:636"/>
                <!-- Technique d'authentification : à ne pas changer en principe. -->
                    <envContext key="java.naming.security.authentication" value="simple"/>

                <!-- Authentification par Search. Dans les pattern pour le baseName et la requete, possibilité de placer :
                        {0} pour le compte d'authentification.
                        {1} pour le mot de passe.
                        -->

                <envContext key="java.naming.security.principal" value="cn=admin,dc=nodomain"/>
                <envContext key="java.naming.security.credentials" value="xxx"/>

                <authByDn dnPattern="uid={0},ou=people,dc=monuniv,dc=fr"/>
        </authMethod>
(...)

Et une commande que j’utilise pour vérifier :

ldapsearch -x -D "uid=${LDAPUSER},ou=People,dc=monuniv,dc=fr" -W -H ldaps://serveurldap.monuniv.fr:636 -b "ou=people,dc=monuniv,dc=fr" "uid=${LDAPUSER}"

Bonjour,

Dans conf/users.properties de l’archive tgz/zip :

# LDAP [boolean]  : active / désactive les fonctions LDAP
user.ldap.disabled=false

# LDAP : Url principale (et alternatives) pour la connexion au serveur LDAP. ex: ldap://xxx.xxx.xxx.xxx:xxxx
user.ldap.url=ldaps://serveurldap.monuniv.fr:636

# LDAP : baseName de la recherche
user.ldap.baseNamePattern=ou=people,dc=monuniv,dc=fr

# LDAP : {0} pour le compte d'authentification; {1} pour le mot de passe
user.ldap.searchPattern=uid={0}

# LDAP : compte pour effectuer la recherche
user.ldap.searchAccount=

# LDAP : mot de passe pour effectuer la recherche
user.ldap.searchPassword=

Il faut bien sur que le certificat pour le LDAPS soit valide (CA qui as signé le certificat connu de Java et domain correspondant)

Si le LDAP n’est pas disponible en readonly pour tous (pour trouver le compte) il faudra mettre un compte de recherche et son password dans user.ldap.searchAccount et user.ldap.searchPassword.

Cordialement,

Pour info, je m’en suis sorti en modifiant dans SCENARIbuilder la configuration de SCENARIsuite : dans chain.linker changer smp:bySearch en smp:direct, j’ai pu reprendre mon ancienne configuration déjà en place en 4.2.

La solution proposé par Laurent aurait probablement marché si j’avais été plus habile, mais je n’ai pas su passer l’étape de l’erreur « système d’authentification indisponible » en me basant dessus (mais merci pour cette piste, cela aidera probablement d’autres utilisateurs).