Authentification personnalisée
Configuration
Mise en place d’une valve d’authentification personnalisée pour DigDash
Prérequis
- Avoir récupéré le dossier CustomAuthenticator dans le répertoire add-ons de l’archive d’installation DigDash. Il contient tous les fichiers nécessaires à la mise en place de la valve d’authentification personnalisée dans le serveur Tomcat de DigDash. Le placement de ces fichiers est décrit dans ce document.
- Le dossier Tomcat7 : les versions des librairies pour un serveur Tomcat 7
- Le dossier Tomcat8 : les versions des librairies pour un serveur Tomcat 8
- Les manipulations suivantes sont à réaliser le serveur DigDash stoppé.
Configuration du serveur DigDash
Copie des librairies
Ajouter les librairies ainsi que le fichier de configuration des logs du dossier CustomAuthenticator/Tomcat<N> (N : version Tomcat) dans le dossier
<digdash_installation>/apache/lib:
custom_authenticator.jar | httpcore-4.4.9.jar |
commons-codec-1.10.jar | httpmime-4.5.5.jar |
commons-logging-1.2.jar | log4j-1.2.15.jar |
httpclient-4.5.5.jar |
Librairies du dossier CustomAuthenticator/Tomcat8
Ajout de la valve d’authentification personnalisée
Ajouter la valve d’authentification personnalisée dans le fichier context.xml situé dans le dossier
<digdash_installation>/apache-tomcat/conf
Pour cela, ajouter l’élément Valve suivant dans l’élément Context.
...
<Valve className="custom.apache.CustomAuthenticator"
sharedPasswd="secret"
allowAddr=".*localhost.*,.*127.0.0.*"
portalUrl="<url>?login=${login}&token=${token}"
fallbackAuth="LDAP"
expectedResponse="OK" />
</Context ...>
Extrait du fichier server.xml
Valeur invariable / Valeur variable selon l’installation
Attribut | Description |
className | Nom de la classe Java, implémentant l'interface org.apache.catalina.Valve, à utiliser comme Valve ici. Cet attribut est obligatoire, car il permet de sélectionner la Valve à utiliser. Il en existe en effet plusieurs implémentations fournies par Tomcat. |
sharedPasswd | Le mot de passe partagé et vérifié à l’authentification (voir point II.5) |
allowAddr | Expression(s) régulière(s) que l’adresse d’envoi des requêtes vers le dashboard doit satisfaire. Dans le cas de regex multiples, séparer par des virgules. |
portalUrl | L’adresse de la page de vérification de utilisateur et du jeton (token). - Elle peut être unique et demander la validation à un seul et même serveur ; dans ce cas: <protocole>://<hôte>:<port>/<contexte>/<chemin>?login=${login}&token=${token} - Elle peut correspondre à l’adresse de la source émettrice de la requête d’accès vers le dashboard ; indiquer dans ce cas seulement le chemin restant : <contexte>/<chemin>?login=${login}&token=${token} La valve analysera dans les paramètres header de la requête entrante le Referer vers lequel renvoyer la demande de vérification. |
fallbackAuth | Méthode d'authentification à utiliser en cas d'échec de l'authentification de la valve. |
expectedResponse | Réponse renvoyée par la page en cas d'authentification valide (non sensible à la casse), toutes autres réponses conduit à l'échec de l'authentification. |
print_debug | Facultatif, vaut false par défaut, sinon, ajouter print_debug="true" pour des traces plus verbeuses. |
Tableau décrivant les attributs de l’élément Valve
Ajout des contraintes de sécurité
Ajouter les contraintes de sécurité au fichier web.xml situé dans le dossier
<digdash_installation>/apache-tomcat/conf.
...
<security-role>
<role-name>CUSTOM</role-name>
</security-role>
<security-constraint>
<display-name>CUSTOM Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>CUSTOM</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Non-Protected Area</web-resource-name>
<url-pattern>/vjdbc</url-pattern>
</web-resource-collection>
</security-constraint>
...
</web-app>
Extrait du fichier web.xml
URL du serveur et domaine pour le Dashboard
Il peut être nécessaire, et il est conseillé de préciser sur quel serveur/domaine le Dashboard va s’appuyer.
Pour cela, modifier dans le fichier web.xml dans
<digdash_installation>/apache-tomcat/webapps/digdash_dashboard/WEB-INF.
Pour forcer le domaine, changer la valeur du paramètre FORCEDOMAIN à true.
Mentionner le nom du domaine en changeant le paramètre DOMAIN.
Pour forcer l’adresse du serveur, changer la valeur du paramètre FORCESERVERURL à true.
Mentionner l’adresse du serveur en changeant le paramètre SERVERURL.
...
<servlet>
<servlet-name>dashServlet</servlet-name>
<servlet-class>com.digdash.server.DigdashServiceImpl</servlet-class>
...
<init-param>
<param-name>DOMAIN</param-name>
<param-value>ddenterpriseapi</param-value>
</init-param>
<init-param>
<param-name>FORCEDOMAIN</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>SERVERURL</param-name>
<param-value>http://localhost:8080</param-value>
</init-param>
<init-param>
<param-name>FORCESERVERURL</param-name>
<param-value>true</param-value>
</init-param>
...
</servlet>
...
</web-app>
Valeur variable selon l’installation : "ddenterpriseapi" / "true" / "8080".
Extrait du fichier web.xml
|
|
Changement de la valeur du paramètre sharedPasswd
Dé-commenter et changer la valeur du paramètre sharedPasswd (valeur secret ci-dessous à changer) dans le fichier web.xml dans le dossier
<digdash_installation>/apache-tomcat/webapps/digdash_dashboard/WEB-INF.
La valeur doit correspondre à celle mentionnée dans l’attribut sharedPasswd dans la valve du fichier
<digdash_installation>/apache-tomcat/conf/server.xml (voir partie II.2).
...
<servlet>
<servlet-name>dashServlet</servlet-name>
<servlet-class>com.digdash.server.DigdashServiceImpl</servlet-class>
...
<init-param>
<param-name>sharedPasswd</param-name>
<param-value>secret</param-value>
</init-param>
...
</servlet>
...
</web-app>
Valeur variable selon l’installation : "secret".
Extrait du fichier server.xml
Modification de la méthode d'authentification
Modifier le paramètre authMethod pour changer la méthode d'authentification (LDAP est la méthode par défaut) dans le fichier web.xml situé dans le dossier
<digdash_installation>/apache-tomcat/webapps/ddenterpriseapi/WEB-INF.
"External" signifie que la sécurité est gérée par la valve configurée ci-dessus.
...
<servlet>
...
</servlet>
...
<servlet>
<description></description>
<display-name>DDEnterpriseAuthServlet</display-name>
<servlet-name>DDEnterpriseAuthServlet</servlet-name>
<servlet-class>com.digdash.server.DDEnterpriseAuthServlet</servlet-class>
<init-param>
<param-name>authMethod</param-name>
<param-value>External</param-value>
</init-param>
...
</servlet>
...
</web-app>
Extrait du fichier web.xml