Authentification LDAP realm Tomcat et test avec run-jetty-run Eclipse
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
Citation:
MARCHE A SUIVRE
-> le but est d’ajouter une autentification http BASIC à une webapp lors d’une exécution via la plugin runjettyrun.
PREPARATION
- Dans le dossier src de la webapp ajouter le dossier jetty.
- Dans le dossier src/jetty créer le fichier jetty-run-config.xml.
- Editer le fichier jetty-run-config.xml.
Code:
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> |
- Dans le dossier src/jetty créer le fichier jetty-realm.properties.
- Editer le fichier jetty-realm.properties.
- user: secret,jettyuser
SECURISER LA WEBAPP
- Editer le fichier web.xml.
Code:
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
- 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.
- 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.
- 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
- Créer une nouvelle configuration de démarrage (menu « run »)
- Cocher la case Show Advanced Options.
- Dans le champ Additional Jetty .xml sélectionner le fichier jetty-run-config.xml.
- 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:
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="(&(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