Authentification personnalisée
Ce document décrit la mise en place d’une valve d’authentification personnalisée pour DigDash Enterprise.
Prérequis
- Disposer du dossier <Install DD>/add-ons/CustomAuthenticator contenant 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.
- Les manipulations suivantes sont à réaliser le serveur DigDash stoppé.
Configuration du serveur DigDash
Copie des librairies
Copiez les librairies ainsi que le fichier de configuration des logs du dossier <install DD>/add-ons/CustomAuthenticator/Tomcat<N> (N : version Tomcat qui nous intéresse) dans le dossier :
<Install DD>/apache-tomcat/lib
Dossier Tomcat7 : les versions des librairies pour un serveur Tomcat 7
Dossier Tomcat8 : les versions des librairies pour un serveur Tomcat 8 ainsi que pour les versions supérieures
Fichiers à copier :
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 |
Ajout de la valve d’authentification personnalisée
Activez la valve d’authentification personnalisée dans le fichier context.xml situé dans le dossier :
<Install DD>/apache-tomcat/conf
Pour cela, chercher l’élément <Context ...> dans le fichier, décommenter ou y rajouter l’élément <Valve ...> ci-dessous :
sharedPasswd="secret"
allowAddr=".*localhost.*,.*127.0.0.*"
portalUrl="<url>?login=${login}&token=${token}"
fallbackAuth="LDAP"
expectedResponse="OK" />
Légende : 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. |
Ajout des contraintes de sécurité
Décommentez ou ajoutez les contraintes de sécurité au fichier web.xml situé dans le dossier :
<Install DD>/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>
Configuration des applications
Pour cela, modifiez le fichier digdash.properties dans <install DD> ou /etc/digdash ou dans le dossier que vous auriez configuré dans setenv.bat/setenv.sh.
Configuration du Serveur (ddenterprise.war)
Dans le fichier digdash.properties :
Dans l'encadré ddenterpriseapi.war, rechercher et dé-commenter les lignes suivantes avec les valeurs indiquées :
Configuration du Tableau de bord (digdash_dashboard.war)
Dans le fichier digdash.properties :
Dans l'encadré digdash_dashbord.war, rechercher et dé-commenter les lignes suivantes avec les valeurs indiquées :
digdash_dashboard.DOMAIN=ddenterpriseapi
digdash_dashboard.FORCEDOMAIN=true
digdash_dashboard.FORCESERVERURL=true
digdash_dashboard.sharedPasswd=<la valeur de l'attribut sharedPasswd dans l'élément Valve>
Configuration du Studio (studio.war)
Dans le fichier digdash.properties :
Dans l'encadré studio.war, rechercher et dé-commenter les lignes suivantes avec les valeurs indiquées :
studio.DOMAIN=ddenterpriseapi
studio.FORCEDOMAIN=true
studio.FORCESERVERURL=true
studio.PUBLICSERVERURL=<votre adresse URL publique>
studio.sharedPasswd=<la valeur de l'attribut sharedPasswd dans l'élément Valve>