Code source wiki de Authentification personnalisée
Modifié par jhurst le 2021/07/19 14:27
Afficher les derniers auteurs
author | version | line-number | content |
---|---|---|---|
1 | {{ddtoc/}} | ||
2 | |||
3 | ---- | ||
4 | |||
5 | (% class="wikigeneratedid" %) | ||
6 | Ce document décrit la mise en place d’une valve d’authentification personnalisée pour DigDash Enterprise. | ||
7 | |||
8 | = Prérequis = | ||
9 | |||
10 | * 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. | ||
11 | * Les manipulations suivantes sont à réaliser **le serveur DigDash stoppé**. | ||
12 | |||
13 | = Configuration du serveur DigDash = | ||
14 | |||
15 | == Copie des librairies == | ||
16 | |||
17 | 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 : | ||
18 | |||
19 | (% class="box" %) | ||
20 | ((( | ||
21 | <Install DD>/apache-tomcat/lib | ||
22 | ))) | ||
23 | |||
24 | Dossier **Tomcat7 **: les versions des librairies **pour un serveur Tomcat 7** | ||
25 | Dossier **Tomcat8 **: les versions des librairies **pour un serveur Tomcat 8 ainsi que pour les versions supérieures** | ||
26 | |||
27 | Fichiers à copier : | ||
28 | |||
29 | |custom_authenticator.jar|httpcore-4.4.9.jar | ||
30 | |commons-codec-1.10.jar|httpmime-4.5.5.jar | ||
31 | |commons-logging-1.2.jar|log4j-1.2.15.jar | ||
32 | |httpclient-4.5.5.jar| | ||
33 | |||
34 | == Ajout de la valve d’authentification personnalisée == | ||
35 | |||
36 | Activez la valve d’authentification personnalisée dans le fichier **context.xml** situé dans le dossier : | ||
37 | |||
38 | (% class="box" %) | ||
39 | ((( | ||
40 | <Install DD>/apache-tomcat/conf | ||
41 | ))) | ||
42 | |||
43 | Pour cela, chercher l’élément **<Context ...>** dans le fichier, décommenter ou y rajouter l’élément **<Valve ...>** ci-dessous : | ||
44 | |||
45 | ((( | ||
46 | {{code language="XML"}} | ||
47 | <Valve className="custom.apache.CustomAuthenticator" | ||
48 | sharedPasswd="secret" | ||
49 | allowAddr=".*localhost.*,.*127.0.0.*" | ||
50 | portalUrl="<url>?login=${login}&token=${token}" | ||
51 | fallbackAuth="LDAP" | ||
52 | expectedResponse="OK" /> | ||
53 | {{/code}} | ||
54 | |||
55 | Légende : (% style="color:#c0392b" %)//Valeur invariable//(%%)// / (% style="color:#27ae60" %)Valeur variable selon l’installation// | ||
56 | ))) | ||
57 | |||
58 | |(% style="width:238px" %)**Attribut**|(% style="width:1181px" %)**Description** | ||
59 | |(% style="color:#c0392b; width:238px" %)className|(% style="width:1181px" %)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. | ||
60 | |(% style="color:#27ae60; width:238px" %)sharedPasswd|(% style="width:1181px" %)Le mot de passe partagé et vérifié à l’authentification (voir point II.5) | ||
61 | |(% style="color:#27ae60; width:238px" %)allowAddr|(% style="width:1181px" %)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. | ||
62 | |(% style="color:#27ae60; width:238px" %)portalUrl|(% style="width:1181px" %)((( | ||
63 | L’adresse de la page de vérification de utilisateur et du jeton (token). | ||
64 | |||
65 | - Elle peut être unique et demander la validation à un seul et même serveur ; dans ce cas: | ||
66 | |||
67 | (% style="color:#27ae60" %)<protocole>:~/~/<hôte>:<port>/<contexte>/<chemin>(% style="color:#c0392b" %)?login=${login}&token=${token} | ||
68 | |||
69 | - 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 : | ||
70 | |||
71 | (% style="color:#27ae60" %)<contexte>/<chemin>(% style="color:#c0392b" %)?login=${login}&token=${token} | ||
72 | |||
73 | La valve analysera dans les paramètres header de la requête entrante le Referer vers lequel renvoyer la demande de vérification. | ||
74 | ))) | ||
75 | |(% style="color:#27ae60; width:238px" %)fallbackAuth|(% style="width:1181px" %)Méthode d'authentification à utiliser en cas d'échec de l'authentification de la valve. | ||
76 | |(% style="color:#27ae60; width:238px" %)expectedResponse|(% style="width:1181px" %)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. | ||
77 | |(% style="color:#27ae60; width:238px" %)print_debug|(% style="width:1181px" %)Facultatif, vaut false par défaut, sinon, ajouter print_debug="(% style="color:#27ae60" %)true(%%)" pour des traces plus verbeuses. | ||
78 | |||
79 | == Ajout des contraintes de sécurité == | ||
80 | |||
81 | Décommentez ou ajoutez les contraintes de sécurité au fichier **web.xml** situé dans le dossier : | ||
82 | |||
83 | (% class="box" %) | ||
84 | ((( | ||
85 | <Install DD>/apache-tomcat/conf | ||
86 | ))) | ||
87 | |||
88 | {{code language="XML"}} | ||
89 | <web-app ...> | ||
90 | ... | ||
91 | <security-role> | ||
92 | <role-name>CUSTOM</role-name> | ||
93 | </security-role> | ||
94 | |||
95 | <security-constraint> | ||
96 | <display-name>CUSTOM Security Constraint</display-name> | ||
97 | <web-resource-collection> | ||
98 | <web-resource-name>Protected Area</web-resource-name> | ||
99 | <url-pattern>/*</url-pattern> | ||
100 | </web-resource-collection> | ||
101 | <auth-constraint> | ||
102 | <role-name>CUSTOM</role-name> | ||
103 | </auth-constraint> | ||
104 | </security-constraint> | ||
105 | |||
106 | <security-constraint> | ||
107 | <web-resource-collection> | ||
108 | <web-resource-name>Non-Protected Area</web-resource-name> | ||
109 | <url-pattern>/vjdbc</url-pattern> | ||
110 | </web-resource-collection> | ||
111 | </security-constraint> | ||
112 | ... | ||
113 | </web-app> | ||
114 | {{/code}} | ||
115 | |||
116 | ((( | ||
117 | |||
118 | |||
119 | = Configuration des applications = | ||
120 | |||
121 | 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. | ||
122 | |||
123 | |||
124 | == Configuration du Serveur (ddenterprise.war) == | ||
125 | |||
126 | Dans le fichier **digdash.properties** : | ||
127 | |||
128 | Dans l'encadré //ddenterpriseapi.war//, rechercher et dé-commenter les lignes suivantes avec les valeurs indiquées : | ||
129 | |||
130 | {{code language="properties"}} | ||
131 | ddenterpriseapi.authMethod=External | ||
132 | {{/code}} | ||
133 | |||
134 | |||
135 | |||
136 | |||
137 | == Configuration du Tableau de bord (digdash_dashboard.war) == | ||
138 | |||
139 | Dans le fichier **digdash.properties** : | ||
140 | |||
141 | Dans l'encadré //digdash_dashbord.war//, rechercher et dé-commenter les lignes suivantes avec les valeurs indiquées : | ||
142 | |||
143 | {{code language="properties"}} | ||
144 | digdash_dashboard.SERVERURL=http://localhost:8080 | ||
145 | digdash_dashboard.DOMAIN=ddenterpriseapi | ||
146 | digdash_dashboard.FORCEDOMAIN=true | ||
147 | digdash_dashboard.FORCESERVERURL=true | ||
148 | digdash_dashboard.sharedPasswd=<la valeur de l'attribut sharedPasswd dans l'élément Valve> | ||
149 | {{/code}} | ||
150 | |||
151 | (% class="box infomessage" %) | ||
152 | ((( | ||
153 | La valeur d’exemple pour le paramètre //digdash_dashboard.SERVERURL// fera quasiment toujours référence à localhost, lorsque le tableau de bord et le serveur sont placés dans le même serveur Tomcat, ce qui représente quasiment 99.9 % des usages. Il faudra naturellement faire référence à l’adresse du serveur externe si ces deux éléments sont placés sur des serveurs différents. | ||
154 | ))) | ||
155 | |||
156 | |||
157 | == Configuration du Web Studio (studio.war) == | ||
158 | |||
159 | Dans le fichier **digdash.properties** : | ||
160 | |||
161 | Dans l'encadré //studio.war//, rechercher et dé-commenter les lignes suivantes avec les valeurs indiquées : | ||
162 | |||
163 | {{code language="properties"}} | ||
164 | studio.SERVERURL=http://localhost:8080 | ||
165 | studio.DOMAIN=ddenterpriseapi | ||
166 | studio.FORCEDOMAIN=true | ||
167 | studio.FORCESERVERURL=true | ||
168 | studio.PUBLICSERVERURL=<votre adresse URL publique> | ||
169 | studio.sharedPasswd=<la valeur de l'attribut sharedPasswd dans l'élément Valve> | ||
170 | {{/code}} | ||
171 | |||
172 | (% class="box infomessage" %) | ||
173 | ((( | ||
174 | La valeur d’exemple pour le paramètre //studio.SERVERURL// fera quasiment toujours référence à localhost, lorsque le Studio et le serveur sont placés dans le même serveur Tomcat, ce qui représente quasiment 99.9 % des usages. Il faudra naturellement faire référence à l’adresse du serveur externe si ces deux éléments sont placés sur des serveurs différents. | ||
175 | ))) | ||
176 | |||
177 | |||
178 | |||
179 | == Configuration de l'Enterprise Studio == | ||
180 | |||
181 | (% class="box warningmessage" %) | ||
182 | ((( | ||
183 | Le Desktop Studio n'est pas compatible avec cette méthode d'authentification. | ||
184 | On privilégiera l'utilisation du Studio Web. | ||
185 | ))) | ||
186 | ))) |