Code source wiki de Authentification personnalisée
Modifié par jhurst le 2024/04/02 14:26
Afficher les derniers auteurs
author | version | line-number | content |
---|---|---|---|
1 | **Configuration** | ||
2 | |||
3 | Mise en place d’une valve d’authentification personnalisée pour DigDash | ||
4 | |||
5 | {{ddtoc/}} | ||
6 | |||
7 | = Prérequis = | ||
8 | |||
9 | * 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. | ||
10 | ** Le dossier Tomcat7 : les versions des librairies pour un serveur Tomcat 7 | ||
11 | ** Le dossier Tomcat8 : les versions des librairies pour un serveur Tomcat 8 | ||
12 | * Les manipulations suivantes sont à réaliser **le serveur DigDash stoppé**. | ||
13 | |||
14 | = Configuration du serveur DigDash = | ||
15 | |||
16 | == Copie des librairies == | ||
17 | |||
18 | Ajouter les librairies ainsi que le fichier de configuration des logs du dossier **CustomAuthenticator/Tomcat<N>** (N : version Tomcat) dans le dossier | ||
19 | |||
20 | **<digdash_installation>/apache/lib**: | ||
21 | |||
22 | |custom_authenticator.jar|httpcore-4.4.9.jar | ||
23 | |commons-codec-1.10.jar|httpmime-4.5.5.jar | ||
24 | |commons-logging-1.2.jar|log4j-1.2.15.jar | ||
25 | |httpclient-4.5.5.jar| | ||
26 | |||
27 | __Librairies du dossier CustomAuthenticator/Tomcat8__ | ||
28 | |||
29 | == Ajout de la valve d’authentification personnalisée == | ||
30 | |||
31 | Ajouter la valve d’authentification personnalisée dans le fichier **context.xml** situé dans le dossier | ||
32 | |||
33 | **<digdash_installation>/apache-tomcat/conf** | ||
34 | |||
35 | Pour cela, ajouter l’élément Valve suivant dans l’élément **Context**. | ||
36 | |||
37 | |||
38 | ((( | ||
39 | {{code language="XML"}} | ||
40 | <Context> | ||
41 | ... | ||
42 | <Valve className="custom.apache.CustomAuthenticator" | ||
43 | sharedPasswd="secret" | ||
44 | allowAddr=".*localhost.*,.*127.0.0.*" | ||
45 | portalUrl="<url>?login=${login}&token=${token}" | ||
46 | fallbackAuth="LDAP" | ||
47 | expectedResponse="OK" /> | ||
48 | </Context ...> | ||
49 | {{/code}} | ||
50 | |||
51 | |||
52 | __Extrait du fichier server.xml__ | ||
53 | |||
54 | |||
55 | (% style="color:#c0392b" %)Valeur invariable(%%) / (% style="color:#27ae60" %)Valeur variable selon l’installation | ||
56 | ))) | ||
57 | |||
58 | |Attribut|Description | ||
59 | |(% style="color:#c0392b" %)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. | ||
60 | |(% style="color:#27ae60" %)sharedPasswd|Le mot de passe partagé et vérifié à l’authentification (voir point II.5) | ||
61 | |(% style="color:#27ae60" %)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. | ||
62 | |(% style="color:#27ae60" %)portalUrl|((( | ||
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" %)fallbackAuth|Méthode d'authentification à utiliser en cas d'échec de l'authentification de la valve. | ||
76 | |(% style="color:#27ae60" %)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. | ||
77 | |(% style="color:#27ae60" %)print_debug|Facultatif, vaut false par défaut, sinon, ajouter print_debug="(% style="color:#27ae60" %)true(%%)" pour des traces plus verbeuses. | ||
78 | |||
79 | __Tableau décrivant les attributs de l’élément Valve__ | ||
80 | |||
81 | == Ajout des contraintes de sécurité == | ||
82 | |||
83 | Ajouter les contraintes de sécurité au fichier **web.xml** situé dans le dossier | ||
84 | |||
85 | **<digdash_installation>/apache-tomcat/conf**. | ||
86 | |||
87 | {{code language="XML"}} | ||
88 | <web-app ...> | ||
89 | ... | ||
90 | <security-role> | ||
91 | <role-name>CUSTOM</role-name> | ||
92 | </security-role> | ||
93 | |||
94 | <security-constraint> | ||
95 | <display-name>CUSTOM Security Constraint</display-name> | ||
96 | <web-resource-collection> | ||
97 | <web-resource-name>Protected Area</web-resource-name> | ||
98 | <url-pattern>/*</url-pattern> | ||
99 | </web-resource-collection> | ||
100 | <auth-constraint> | ||
101 | <role-name>CUSTOM</role-name> | ||
102 | </auth-constraint> | ||
103 | </security-constraint> | ||
104 | |||
105 | <security-constraint> | ||
106 | <web-resource-collection> | ||
107 | <web-resource-name>Non-Protected Area</web-resource-name> | ||
108 | <url-pattern>/vjdbc</url-pattern> | ||
109 | </web-resource-collection> | ||
110 | </security-constraint> | ||
111 | ... | ||
112 | </web-app> | ||
113 | {{/code}} | ||
114 | |||
115 | ((( | ||
116 | __Extrait du fichier web.xml__ | ||
117 | ))) | ||
118 | |||
119 | == URL du serveur et domaine pour le Dashboard == | ||
120 | |||
121 | Il peut être nécessaire, et **il est conseillé** de préciser sur quel serveur/domaine le Dashboard va s’appuyer. | ||
122 | |||
123 | Pour cela, modifier dans le fichier **web.xml** dans | ||
124 | |||
125 | **<digdash_installation>/apache-tomcat/webapps/digdash_dashboard/WEB-INF.** | ||
126 | |||
127 | Pour forcer le domaine, changer la valeur du paramètre **FORCEDOMAIN** à //true//. | ||
128 | Mentionner le nom du domaine en changeant le paramètre **DOMAIN**. | ||
129 | |||
130 | Pour forcer l’adresse du serveur, changer la valeur du paramètre **FORCESERVERURL** à //true//. | ||
131 | Mentionner l’adresse du serveur en changeant le paramètre **SERVERURL**. | ||
132 | |||
133 | {{code language="XML"}} | ||
134 | <web-app ...> | ||
135 | ... | ||
136 | <servlet> | ||
137 | <servlet-name>dashServlet</servlet-name> | ||
138 | <servlet-class>com.digdash.server.DigdashServiceImpl</servlet-class> | ||
139 | ... | ||
140 | <init-param> | ||
141 | <param-name>DOMAIN</param-name> | ||
142 | <param-value>ddenterpriseapi</param-value> | ||
143 | </init-param> | ||
144 | |||
145 | <init-param> | ||
146 | <param-name>FORCEDOMAIN</param-name> | ||
147 | <param-value>true</param-value> | ||
148 | </init-param> | ||
149 | |||
150 | <init-param> | ||
151 | <param-name>SERVERURL</param-name> | ||
152 | <param-value>http://localhost:8080</param-value> | ||
153 | </init-param> | ||
154 | |||
155 | <init-param> | ||
156 | <param-name>FORCESERVERURL</param-name> | ||
157 | <param-value>true</param-value> | ||
158 | </init-param> | ||
159 | ... | ||
160 | </servlet> | ||
161 | ... | ||
162 | </web-app> | ||
163 | {{/code}} | ||
164 | |||
165 | ((( | ||
166 | |||
167 | |||
168 | Valeur variable selon l’installation : "ddenterpriseapi" / "true" / "8080". | ||
169 | |||
170 | |||
171 | ))) | ||
172 | |||
173 | __Extrait du fichier web.xml__ | ||
174 | |||
175 | |((( | ||
176 | [[image:1591347244508-950.png]] | ||
177 | )))|((( | ||
178 | * La valeur d’exemple pour le paramètre 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 % 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. | ||
179 | ))) | ||
180 | |||
181 | |(% style="background-color:#ffffff" %)[[image:1591347251515-981.png]] | ||
182 | |((( | ||
183 | * Ce paramètre est éditable via le fichier web.xml comme indiqué ci-dessus. Ce fichier est propre à chaque installation de DigDash. Il vous est possible de renseigner ce paramètre de manière plus globale dans le fichier((( | ||
184 | **<utilisateur>/Application Data/Enterprise Server/dashboard_system.xml** | ||
185 | |||
186 | Pour en savoir plus, vous pouvez vous référer à la documentation DigDash « guide_avance_systeme_fr.pdf ». | ||
187 | ))) | ||
188 | ))) | ||
189 | |||
190 | == Changement de la valeur du paramètre sharedPasswd == | ||
191 | |||
192 | Dé-commenter et changer la valeur du paramètre **sharedPasswd** (valeur secret ci-dessous à changer) dans le fichier **web.xml** dans le dossier | ||
193 | |||
194 | **<digdash_installation>/apache-tomcat/webapps/digdash_dashboard/WEB-INF**. | ||
195 | |||
196 | La valeur doit correspondre à celle mentionnée dans l’attribut **sharedPasswd** dans la valve du fichier | ||
197 | |||
198 | **<digdash_installation>/apache-tomcat/conf/server.xml** (voir partie II.2). | ||
199 | |||
200 | {{code language="XML"}} | ||
201 | <web-app ...> | ||
202 | ... | ||
203 | <servlet> | ||
204 | <servlet-name>dashServlet</servlet-name> | ||
205 | <servlet-class>com.digdash.server.DigdashServiceImpl</servlet-class> | ||
206 | ... | ||
207 | <init-param> | ||
208 | <param-name>sharedPasswd</param-name> | ||
209 | <param-value>secret</param-value> | ||
210 | </init-param> | ||
211 | ... | ||
212 | </servlet> | ||
213 | ... | ||
214 | </web-app> | ||
215 | {{/code}} | ||
216 | |||
217 | ((( | ||
218 | Valeur variable selon l’installation : "secret". | ||
219 | |||
220 | __Extrait du fichier server.xml__ | ||
221 | |||
222 | |||
223 | ))) | ||
224 | |||
225 | == Modification de la méthode d'authentification == | ||
226 | |||
227 | 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 | ||
228 | |||
229 | **<digdash_installation>/apache-tomcat/webapps/ddenterpriseapi/WEB-INF**. | ||
230 | |||
231 | "//External//" signifie que la sécurité est gérée par la valve configurée ci-dessus. | ||
232 | |||
233 | {{code language="XML"}} | ||
234 | <web-app ...> | ||
235 | ... | ||
236 | <servlet> | ||
237 | ... | ||
238 | </servlet> | ||
239 | ... | ||
240 | <servlet> | ||
241 | <description></description> | ||
242 | <display-name>DDEnterpriseAuthServlet</display-name> | ||
243 | <servlet-name>DDEnterpriseAuthServlet</servlet-name> | ||
244 | <servlet-class>com.digdash.server.DDEnterpriseAuthServlet</servlet-class> | ||
245 | |||
246 | <init-param> | ||
247 | <param-name>authMethod</param-name> | ||
248 | <param-value>External</param-value> | ||
249 | </init-param> | ||
250 | ... | ||
251 | </servlet> | ||
252 | ... | ||
253 | </web-app> | ||
254 | {{/code}} | ||
255 | |||
256 | ((( | ||
257 | __Extrait du fichier web.xml__ | ||
258 | ))) |