Code source wiki de Authentification personnalisée
Modifié par jhurst le 2020/10/29 13:32
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 | * 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. | ||
11 | ** Le dossier Tomcat7 : les versions des librairies pour un serveur Tomcat 7 | ||
12 | ** Le dossier Tomcat8 : les versions des librairies pour un serveur Tomcat 8 | ||
13 | * Les manipulations suivantes sont à réaliser **le serveur DigDash stoppé**. | ||
14 | |||
15 | = Configuration du serveur DigDash = | ||
16 | |||
17 | == Copie des librairies == | ||
18 | |||
19 | Ajouter les librairies ainsi que le fichier de configuration des logs du dossier **CustomAuthenticator/Tomcat<N>** (N : version Tomcat) dans le dossier | ||
20 | |||
21 | **<digdash_installation>/apache/lib**: | ||
22 | |||
23 | |custom_authenticator.jar|httpcore-4.4.9.jar | ||
24 | |commons-codec-1.10.jar|httpmime-4.5.5.jar | ||
25 | |commons-logging-1.2.jar|log4j-1.2.15.jar | ||
26 | |httpclient-4.5.5.jar| | ||
27 | |||
28 | __Librairies du dossier CustomAuthenticator/Tomcat8__ | ||
29 | |||
30 | == Ajout de la valve d’authentification personnalisée == | ||
31 | |||
32 | Ajouter la valve d’authentification personnalisée dans le fichier **context.xml** situé dans le dossier | ||
33 | |||
34 | **<digdash_installation>/apache-tomcat/conf** | ||
35 | |||
36 | Pour cela, ajouter l’élément Valve suivant dans l’élément **Context**. | ||
37 | |||
38 | |||
39 | ((( | ||
40 | {{code language="XML"}} | ||
41 | <Context> | ||
42 | ... | ||
43 | <Valve className="custom.apache.CustomAuthenticator" | ||
44 | sharedPasswd="secret" | ||
45 | allowAddr=".*localhost.*,.*127.0.0.*" | ||
46 | portalUrl="<url>?login=${login}&token=${token}" | ||
47 | fallbackAuth="LDAP" | ||
48 | expectedResponse="OK" /> | ||
49 | </Context ...> | ||
50 | {{/code}} | ||
51 | |||
52 | |||
53 | __Extrait du fichier server.xml__ | ||
54 | |||
55 | |||
56 | (% style="color:#c0392b" %)Valeur invariable(%%) / (% style="color:#27ae60" %)Valeur variable selon l’installation | ||
57 | ))) | ||
58 | |||
59 | |Attribut|Description | ||
60 | |(% 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. | ||
61 | |(% style="color:#27ae60" %)sharedPasswd|Le mot de passe partagé et vérifié à l’authentification (voir point II.5) | ||
62 | |(% 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. | ||
63 | |(% style="color:#27ae60" %)portalUrl|((( | ||
64 | L’adresse de la page de vérification de utilisateur et du jeton (token). | ||
65 | |||
66 | - Elle peut être unique et demander la validation à un seul et même serveur ; dans ce cas: | ||
67 | |||
68 | (% style="color:#27ae60" %)<protocole>:~/~/<hôte>:<port>/<contexte>/<chemin>(% style="color:#c0392b" %)?login=${login}&token=${token} | ||
69 | |||
70 | - 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 : | ||
71 | |||
72 | (% style="color:#27ae60" %)<contexte>/<chemin>(% style="color:#c0392b" %)?login=${login}&token=${token} | ||
73 | |||
74 | La valve analysera dans les paramètres header de la requête entrante le Referer vers lequel renvoyer la demande de vérification. | ||
75 | ))) | ||
76 | |(% style="color:#27ae60" %)fallbackAuth|Méthode d'authentification à utiliser en cas d'échec de l'authentification de la valve. | ||
77 | |(% 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. | ||
78 | |(% style="color:#27ae60" %)print_debug|Facultatif, vaut false par défaut, sinon, ajouter print_debug="(% style="color:#27ae60" %)true(%%)" pour des traces plus verbeuses. | ||
79 | |||
80 | __Tableau décrivant les attributs de l’élément Valve__ | ||
81 | |||
82 | == Ajout des contraintes de sécurité == | ||
83 | |||
84 | Ajouter les contraintes de sécurité au fichier **web.xml** situé dans le dossier | ||
85 | |||
86 | **<digdash_installation>/apache-tomcat/conf**. | ||
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 | __Extrait du fichier web.xml__ | ||
118 | ))) | ||
119 | |||
120 | == URL du serveur et domaine pour le Dashboard == | ||
121 | |||
122 | Il peut être nécessaire, et **il est conseillé** de préciser sur quel serveur/domaine le Dashboard va s’appuyer. | ||
123 | |||
124 | Pour cela, modifier dans le fichier **web.xml** dans | ||
125 | |||
126 | **<digdash_installation>/apache-tomcat/webapps/digdash_dashboard/WEB-INF.** | ||
127 | |||
128 | Pour forcer le domaine, changer la valeur du paramètre **FORCEDOMAIN** à //true//. | ||
129 | Mentionner le nom du domaine en changeant le paramètre **DOMAIN**. | ||
130 | |||
131 | Pour forcer l’adresse du serveur, changer la valeur du paramètre **FORCESERVERURL** à //true//. | ||
132 | Mentionner l’adresse du serveur en changeant le paramètre **SERVERURL**. | ||
133 | |||
134 | {{code language="XML"}} | ||
135 | <web-app ...> | ||
136 | ... | ||
137 | <servlet> | ||
138 | <servlet-name>dashServlet</servlet-name> | ||
139 | <servlet-class>com.digdash.server.DigdashServiceImpl</servlet-class> | ||
140 | ... | ||
141 | <init-param> | ||
142 | <param-name>DOMAIN</param-name> | ||
143 | <param-value>ddenterpriseapi</param-value> | ||
144 | </init-param> | ||
145 | |||
146 | <init-param> | ||
147 | <param-name>FORCEDOMAIN</param-name> | ||
148 | <param-value>true</param-value> | ||
149 | </init-param> | ||
150 | |||
151 | <init-param> | ||
152 | <param-name>SERVERURL</param-name> | ||
153 | <param-value>http://localhost:8080</param-value> | ||
154 | </init-param> | ||
155 | |||
156 | <init-param> | ||
157 | <param-name>FORCESERVERURL</param-name> | ||
158 | <param-value>true</param-value> | ||
159 | </init-param> | ||
160 | ... | ||
161 | </servlet> | ||
162 | ... | ||
163 | </web-app> | ||
164 | {{/code}} | ||
165 | |||
166 | ((( | ||
167 | |||
168 | |||
169 | Valeur variable selon l’installation : "ddenterpriseapi" / "true" / "8080". | ||
170 | |||
171 | |||
172 | ))) | ||
173 | |||
174 | __Extrait du fichier web.xml__ | ||
175 | |||
176 | |||
177 | |||
178 | (% class="box infomessage" %) | ||
179 | ((( | ||
180 | 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. | ||
181 | ))) | ||
182 | |||
183 | |||
184 | |||
185 | 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 | ||
186 | |||
187 | ((( | ||
188 | **<utilisateur>/Application Data/Enterprise Server/dashboard_system.xml** | ||
189 | |||
190 | Pour en savoir plus, vous pouvez vous référer à la documentation DigDash « guide_avance_systeme_fr.pdf ». | ||
191 | ))) | ||
192 | |||
193 | == Changement de la valeur du paramètre sharedPasswd == | ||
194 | |||
195 | Dé-commenter et changer la valeur du paramètre **sharedPasswd** (valeur secret ci-dessous à changer) dans le fichier **web.xml** dans le dossier | ||
196 | |||
197 | **<DDE Install>/apache-tomcat/webapps/digdash_dashboard/WEB-INF**. | ||
198 | |||
199 | La valeur doit correspondre à celle mentionnée dans l’attribut **sharedPasswd** dans la valve du fichier | ||
200 | |||
201 | **<DDE Install>/apache-tomcat/conf/server.xml** (voir partie II.2). | ||
202 | |||
203 | {{code language="XML"}} | ||
204 | <web-app ...> | ||
205 | ... | ||
206 | <servlet> | ||
207 | <servlet-name>dashServlet</servlet-name> | ||
208 | <servlet-class>com.digdash.server.DigdashServiceImpl</servlet-class> | ||
209 | ... | ||
210 | <init-param> | ||
211 | <param-name>sharedPasswd</param-name> | ||
212 | <param-value>secret</param-value> | ||
213 | </init-param> | ||
214 | ... | ||
215 | </servlet> | ||
216 | ... | ||
217 | </web-app> | ||
218 | {{/code}} | ||
219 | |||
220 | ((( | ||
221 | Valeur variable selon l’installation : "secret". | ||
222 | |||
223 | __Extrait du fichier server.xml__ | ||
224 | |||
225 | |||
226 | ))) | ||
227 | |||
228 | == Modification de la méthode d'authentification == | ||
229 | |||
230 | 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 | ||
231 | |||
232 | **<DDE Install>/apache-tomcat/webapps/ddenterpriseapi/WEB-INF**. | ||
233 | |||
234 | "//External//" signifie que la sécurité est gérée par la valve configurée ci-dessus. | ||
235 | |||
236 | {{code language="XML"}} | ||
237 | <web-app ...> | ||
238 | ... | ||
239 | <servlet> | ||
240 | ... | ||
241 | </servlet> | ||
242 | ... | ||
243 | <servlet> | ||
244 | <description></description> | ||
245 | <display-name>DDEnterpriseAuthServlet</display-name> | ||
246 | <servlet-name>DDEnterpriseAuthServlet</servlet-name> | ||
247 | <servlet-class>com.digdash.server.DDEnterpriseAuthServlet</servlet-class> | ||
248 | |||
249 | <init-param> | ||
250 | <param-name>authMethod</param-name> | ||
251 | <param-value>External</param-value> | ||
252 | </init-param> | ||
253 | ... | ||
254 | </servlet> | ||
255 | ... | ||
256 | </web-app> | ||
257 | {{/code}} | ||
258 | |||
259 | ((( | ||
260 | __Extrait du fichier web.xml__ | ||
261 | ))) |