Bonjour,

suite à mes investigations
j'ai mis en place l'authentification Basic sur mon tomcat. mais pour le dev nous utilisons maven et run-jetty-run dans éclipse.

pour faire fonctionner tous ça j'ai donc eu besoin de configurer run-jetty-run avec une authentification en fichier et tomcat avec LDAP

pour Jetty voici ce que j'ai fait
MARCHE A SUIVRE
-> le but est d’ajouter une autentification http BASIC à une webapp lors d’une exécution via la plugin runjettyrun.
PREPARATION
  1. Dans le dossier src de la webapp ajouter le dossier jetty.
  2. Dans le dossier src/jetty créer le fichier jetty-run-config.xml.
  3. Editer le fichier jetty-run-config.xml.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
     
    <Configure class="org.mortbay.jetty.Server">
      <Set name="UserRealms">
        <Array type="org.mortbay.jetty.security.UserRealm">
          <Item>
            <New class="org.mortbay.jetty.security.HashUserRealm">
              <Set name="name">Jetty Realm</Set>
              <Set name="config"><SystemProperty name="jetty.home" default="."/>/src/jetty/jetty-realm.properties</Set>
              <Set name="refreshInterval">0</Set>
            </New>
          </Item>
        </Array>
      </Set>
    </Configure>
  4. Dans le dossier src/jetty créer le fichier jetty-realm.properties.
  5. Editer le fichier jetty-realm.properties.
  6. user: secret,jettyuser

SECURISER LA WEBAPP
  1. Editer le fichier web.xml.

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
 
   <security-constraint>
      <web-resource-collection>
         <web-resource-name>JettyServer</web-resource-name>
         <url-pattern>/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
         <role-name>jettyuser</role-name>
      </auth-constraint>
   </security-constraint>
 
   <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>Jetty Realm</realm-name>
   </login-config>
 
   <security-role>
      <role-name>jettyuser</role-name>
   </security-role>
</web-app>
VERIFICATION
  1. Le chemin /src/jetty/jetty-realm.properties dans le fichier jetty-run-config.xml doit correspondre au nom du fichier de propriétés jetty-realm.properties.
  2. La valeur de la propriété <realm-name> du fichier web.xml doit correspondre à celle de <Set name="name"> dans le fichier jetty-run-config.xml.
  3. La valeur de la propriété <role-name> du fichier web.xml doit correspondre au rôle de l’utilisateur dans le fichier jetty-realm.properties (valeur après la virgule).


DEMARRAGE
  1. Créer une nouvelle configuration de démarrage (menu « run »)
  2. Cocher la case Show Advanced Options.
  3. Dans le champ Additional Jetty .xml sélectionner le fichier jetty-run-config.xml.
  4. Exécuter

dans mon cas le rôle-name est mis à * car au final ldap ne gère pas les rôles (i.e. remplacer jettyuser par * dans web.xml et ignorer la vérification 3)

Côté tomcat ajout de l'authentification via LDAP (active Directory)

Dans le fichier serveur;xml sous <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
ajouter
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
          <Realm
             className="org.apache.catalina.realm.JNDIRealm"
             connectionURL="ldap://ds.server.fr:389"
             authentication="simple"
             referrals="follow"
             connectionName="TomcatUser@domainName"
             connectionPassword="supersecret"
             userSearch="(&amp;(CN={0})(memberof=CN=MyGroup,OU=groupes,OU=-standard,DC=domain,DC=societe,DC=fr))"
             userBase="DC=domain,DC=societe,DC=fr"
             userSubtree="true"
             roleSearch="(cn=MyGroup)"
             roleName="cn"
             roleSubtree="true"
             roleBase="DC=DC=domain,DC=societe,DC=fr"
             allRolesMode="authOnly"/>

l'utilisateur est donc authentifié par ldap seul les membre du groupe MyGroup y ont accès.
le rôle n'est pas pris en compte allRolesMode="authOnly"
c'est ne nom du groupe qui est récupéré dans le rôle.

A+JYT