10.12.2. Utiliser LDAP pour vous authentifier auprès des interfaces de Gestion

Pour utiliser un serveur de répertoire LDAP comme source d'authentification pour la Console de gestion, le Management CLI ou l'API de gestion, vous devez effectuer les procédures suivantes :
  1. Créer une connexion sortante au serveur LDAP.
  2. Créer un domaine de sécurité activé-LDAP.
  3. Référencer le nouveau domaine de sécurité dans l'interface de Gestion.
Créer une Connexion sortante au serveur LDAP

La connexion sortante LDAP autorise les attributs suivants :

Tableau 10.1. Attributs d'une Connexion sortante LDAP

Attribut Requis Description
url oui
L'adresse URL du serveur de répertoire.
search-dn oui
Le nom unique (DN) de l'utilisateur autorisé à effectuer des recherches.
search-credentials oui
Le mot de passe de l'utilisateur autorisé à effectuer des recherches.
initial-context-factory non
L'usine de contexte initiale à utiliser quand on établit une connexion. Valeur par défaut com.sun.jndi.ldap.LdapCtxFactory.
security-realm non
Domaine de sécurité à référencer pour obtenir un SSLContext configuré pour établir la connexion.

Exemple 10.13. Ajouter une connexion sortante LDAP

Cet exemple ajoute une connexion sortante par le jeu de propriétés suivant :
  • Search DN: cn=search,dc=acme,dc=com
  • Search Credential: myPass
  • URL: ldap://127.0.0.1:389
La première commande ajoute le domaine de sécurité.
/host=master/core-service=management/security-realm=ldap_security_realm:add
La seconde commande ajoute la connexion LDAP.
/host=master/core-service=management/ldap-connection=ldap_connection/:add(search-credential=myPass,url=ldap://127.0.0.1:389,search-dn="cn=search,dc=acme,dc=com")
Créer un domaine de sécurité activé-LDAP

Les Interfaces de gestion peuvent authentifier sur le serveur LDAP au lieu des domaines de sécurité basés propriété-fichier et configurés par défaut. L'authentificateur LDAP fonctionne en établissant tout d'abord une connexion au serveur de répertoires distant. Il effectue ensuite une recherche en utilisant le nom d'utilisateur que l'utilisateur a transmis au système d'authentification, afin de trouver le nom unique complet (DN) du dossier LDAP. Une nouvelle connexion est alors établie, utilisant le DN de l'utilisateur comme information d'identification et mot de passe fournis par l'utilisateur. Si cette authentification au serveur LDAP réussit, le DN est considéré comme valide.

Le domaine de sécurité LDAP utilise les éléments et attributs de configuration suivants pour pouvoir effectuer ses fonctions.
connection
Le nom de la connexion définie dans <outbound-connections> à utiliser pour se connecter au répertoire LDAP.
base-dn
Le nom unique (DN) du contexte pour commencer à chercher l'utilisateur.
recursive
Indique si la recherche doit être récursive dans toute l'arborescence de répertoires LDAP, ou si l'on doit rechercher uniquement le contexte spécifié. La valeur par défaut est false.
user-dn
Attribut de l'utilisateur qui détient le nom unique (DN). Utilisé par la suite pour tester l'authentification. Valeur par défaut dn.
Soit username-filter ou advanced-filter, comme élément enfant.
Le username-filter utilise un attribut unique nommé attribute, dont la valeur correspond au nom de l'attribut LDAP qui contient le nom d'utilisateur, comme userName ou sambaAccountName.
Le advanced-filter prend un attribut unique nommé filter, qui contient une recherche de filtre en syntaxe LDAP standard. Veillez à bien échapper les caractères & en commutant à & amp;. Voici un exemple de filtre :
(&(sAMAccountName={0})(memberOf=cn=admin,cn=users,dc=acme,dc=com))
Après avoir échappé un caractère esperluette, le filtre apparaîtra ainsi :
(&amp;(sAMAccountName={0})(memberOf=cn=admin,cn=users,dc=acme,dc=com))

Exemple 10.14. XML représentant un Domaine de sécurité activé-LDAP

Cet exemple utilise les paramètres suivants :
  • connection - ldap_connection
  • base-dn - cn=users,dc=acme,dc=com.
  • username-filter - attribute="sambaAccountName"
<security-realm name="ldap_security_realm">
   <authentication>
      <ldap connection="ldap_connection" base-dn="cn=users,dc=acme,dc=com">
         <username-filter attribute="sambaAccountName" />
      </ldap>
  </authentication>
</security-realm>	


Avertissement

Il est important de veiller à ne pas autoriser les mots de passe LDAP. À moins que vous ne désiriez particulièrement les avoir dans votre environnement, ils représentent un problème de sécurité sérieux.
EAP 6.1 inclut un correctif pour CVE-2012-5629, qui définit l'option allowEmptyPasswords des modules de connexion LDAP à false si l'option n'est pas déjà configurée. Pour les versions plus anciennes, cette option devra être configurée manuellement.

Exemple 10.15. Ajout d'un Domaine de sécurité LDAP

La commande ci-dessous ajoute un domaine de sécurité et définit ses attributs pour un serveur autonome.
/host=master/core-service=management/security-realm=ldap_security_realm/authentication=ldap:add(base-dn="DC=mycompany,DC=org", recursive=true, username-attribute="MyAccountName", connection="ldap_connection")
Appliquer le Nouveau domaine de sécurité à l'Interface de gestion

Après avoir créé un domaine de sécurité, vous devez le référencer dans la configuration de votre interface de gestion. L'interface de gestion utilisera le domaine de sécurité pour l'authentification HTTP digest.

Exemple 10.16. Ajouter le Domaine de sécurité à l'interface HTTP

Une fois que la configuration est en place, et que vous aurez démarré à nouveau le contrôleur d'hôtes, la Console de gestion basée-web utilisera LDAP pour authentifier ses utilisateurs.
/host=master/core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value=ldap-security-realm)
Configurer un membre de domaine géré pour s'authentifier par Microsoft Active Directory,

Pour configurer un hôte dans un domaine géré pour s'authentifier sur Active Directory de Microsoft, suivre cette procédure, qui crée un domaine de sécurité et mappe les rôles aux groupes Active Directory, par l'authentification JAAS. Cette procédure est nécessaire parce que Microsoft Active Directory autorise la liaison avec un mot de passe vide. Cette procédure empêche l'utilisation d'un mot de passe vide dans la plate-forme d'applications.

Avant de commencer cette procédure, vous devez connaître le nom de votre contrôleur d'hôte. Cet exemple assume que le contrôleur d'hôte est nommé master.
  1. Ajouter un nouveau <security-realm> nommé ldap_security_realm, et le configurer pour qu'il puisse utiliser JAAS.

    Les commandes CLI suivantes ajoutent le domaine de sécurité, puis définissent son mécanisme d'authentification. Modifier le nom de l'hôte selon les besoins.
    /host=master/core-service=management/security-realm=ldap_security_realm/:add
    /host=master/core-service=management/security-realm=ldap_security_realm/authentication=jaas/:add(name=managementLDAPDomain)
  2. Configurer <http-interface> pour utiliser le nouveau domaine de sécurité.

    La commande de Management CLI suivante configure l'interface HTTP.
    /host=master/core-service=management/management-interface=http-interface/:write-attribute(name=security-realm,value=ldap_security_realm)
  3. Configurer JBoss Enterprise Application Platform pour ajouter une configuration JAAS personnalisée à ses paramètres de démarrage (start-up).

    Modifier le fichier EAP_HOME /bin/domain.conf. Rechercher la variable HOST_CONTROLLER_JAVA_OPTS puis y ajouter des directives pour la JVM, qui sont nécessaires avant le démarrage de JBoss Enterprise Application Platform. Voici un exemple du contenu par défaut de ce paramètre :
    HOST_CONTROLLER_JAVA_OPTS="$JAVA_OPTS"
    
    Ajouter la directive suivante à la ligne : -Djava.security.auth.login.config=/opt/jboss-eap-6.0/domain/configuration/jaas.conf"
    La ligne modifiée ressemble à ceci :
    -Djava.security.auth.login.config=/opt/jboss-eap-6.0/domain/configuration/jaas.conf"
    
  4. Ajouter le module de connexion aux options de module.

    Dans le même fichier, chercher la ligne contenant ce qui suit :
    JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman"
    Modifier cette ligne pour qu'elle ressemble à ceci. Veillez à ne pas insérer d'espaces supplémentaires.
    JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,com.sun.security.auth.login"
    Sauvegarder et fermer le fichier domain.conf.
  5. Créer la configuration JAAS qui sera ajoutée au chemin de classe.

    Créer un nouveau fichier à l'emplacement suivant : EAP_HOME/domain/configuration/jaas.conf
    Le fichier doit contenir ce qui suit. Modifier les paramètres pour qu'ils correspondent à votre environnement.
    managementLDAPDomain {
        org.jboss.security.auth.spi.LdapExtLoginModule required
            java.naming.factory.initial="com.sun.jndi.ldap.LdapCtxFactory"
            java.naming.provider.url="ldap://your_active_directory_host:389"
            java.naming.security.authentication="simple"
            bindDN="cn=Administrator,cn=users,dc=domain,dc=your_company,dc=com"
            bindCredential="password"
            baseCtxDN="cn=users,dc=domain,dc=redhat,dc=com"
            baseFilter="(&(sAMAccountName={0})(|(memberOf=cn=Domain Guests,cn=Users,dc=domain,dc=acme,dc=com)(memberOf=cn=Domain Admins,cn=Users,dc=domain,dc=acme,dc=com)))"
            allowEmptyPasswords="false"
            rolesCtxDN="cn=users,dc=domain,dc=acme,dc=com"
            roleFilter="(cn=no such group)"
            searchScope="SUBTREE_SCOPE";
    };
    
  6. Redémarrer JBoss Enterprise Application Platform et votre interface HTTP utilisera le serveur LDAP pour l'authentification.