Code source wiki de Authentification SAMLv2

Modifié par Aurelie Bertrand le 2025/02/07 10:19

Afficher les derniers auteurs
1 {{ddtoc/}}
2
3 Annexe
4
5 {{ddchildren}}{{/ddchildren}}
6
7 ----
8
9 Ce document décrit la mise en place d’une valve d’authentification SAMLv2 pour DigDash Enterprise.
10
11 (% class="box warningmessage" %)
12 (((
13 L'utilisation de SSO/SAML2 n'est pas recommandé dans le cas de l'intégration d'un tableau de bord dans une page web (via iframe).
14 )))
15
16 = Prérequis =
17
18 * Les acronymes utilisés par la suite sont référencés dans le lexique, à la fin de ce document.
19 * Avoir configuré le serveur avec un connecteur SSL/TLS (HTTPS) (cette méthode d'authentification requiert des échanges sécurisés).
20 * Disposer du dossier **<Install DD>/add-ons/valve_saml2** contenant tous les fichiers nécessaires à la mise en place de la valve d’authentification SAMLv2 dans le serveur Tomcat. Le placement de ces fichiers est décrit dans ce document.
21 ** Le dossier apache-tomcat : transposé à **/etc/tomcat9/** sous Linux **et C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf **sous Windows
22 *** Le sous-dossier lib : librairies et fichier de configuration des logs à placer dans:
23 **** Sous Linux : **/usr/share/tomcat9/lib/**
24 **** Sous Windows : **C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib**
25 *** Le sous-dossier webapps : ACS dans un .war à placer dans :
26 **** Sous Linux : **/home/digdash/webapps/default**
27 **** Sous Windows : **E:/digdash/webapps/default**
28 ** Le dossier resources_samples : exemples de fichiers XML des métadonnées de l’IdP et de fichier .properties des paramètres de sécurité à éditer et placer à l’emplacement voulu.
29 ** Le dossier sp_metadata : Le fichier XML de métadonnées du SP DigDash.
30
31 * Pour le moment, seule la déconnexion initiée par le SP (SP-Initiated SLO) est prise en charge.
32 * Les manipulations suivantes sont à réaliser le serveur DigDash **stoppé**.
33 * L’utilisateur à authentifier doit exister à la fois chez l’IdP et dans le LDAP.
34 * (((
35 Dans le cas de l'utilisation d'un reverse proxy, vérifier la transmission des headers : le reverse proxy utilisé doit autoriser la communication des headers X-Forwarded-Proto et X-Forwarded-Host.
36 )))
37
38 (% class="box warningmessage" %)
39 (((
40 Il est conseillé d’avoir au moins un utilisateur ayant les droits d’ajout d’utilisateurs dans le LDAP avant d’installer la valve SAMLv2, ceci afin d’éviter les échecs d’authentification SSO dès les premières connexions pour cause d’absence de tel utilisateur dans le LDAP.
41 )))
42
43 **Échanges mutuels des métadonnées du SP et de l’IdP**
44
45 Les deux parties (Identity Provider et Service Provider) devront au préalable s’échanger mutuellement leurs métadonnées respectives sous la forme de fichiers XML . Ces métadonnées permettront notamment de connaître leur point d’entrée respectif et les détails des échanges sécurisés.
46
47 = Configuration du serveur DigDash =
48
49 == Copie des librairies ==
50
51 Copiez les librairies ainsi que le fichier de configuration des logs du dossier **<install DD>/add-ons/valve_saml2/apache-tomcat/lib** dans le dossier :
52
53 (% class="box" %)
54 (((
55 * sous Linux : **/usr/share/tomcat9/lib/**
56 * sous Windows : **C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib**
57 )))
58
59 Fichiers à copier : 
60
61 |saml2-valve.jar|slf4j-api-1.7.12.jar
62 |commons-codec-1.10.jar|log4j-1.2.15.jar
63 |commons-lang3-3.4.jar|slf4j-log4j12-1.7.7.jar
64 |commons-logging-1.2.jar|xmlsec-2.0.7.jar
65 |joda-time-2.9.4.jar|log4j.properties
66
67 == Ajout de la valve d’authentification SAMLv2 ==
68
69 Activez la valve d’authentification SAMLv2 dans le fichier **server.xml** situé dans le dossier :
70
71 (% class="box" %)
72 (((
73 * sous Linux : **/etc/tomcat9/**
74 * sous Windows : **C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf**
75 )))
76
77 Pour cela, cherchez l’élément **<Host ...>** dans le fichier, décommentez ou y rajoutez l’élément **<Valve ...>** ci-dessous :
78
79 (((
80 {{code language="XML" cssClass="notranslate"}}
81 <Valve className="com.onelogin.saml2.SAML2SSOValve"
82 allowAddr="localhost,127.0.0.*,0:0:0:0:0:0:0:1"
83 fallbackAuth="LDAP"
84 idPMetadataPath="C:\idp_md.xml"
85 securitySettingsPath="C:\saml2.sec.properties"
86 uid="email"
87 sharedPasswd="sharedPassword" ></Valve>
88 {{/code}}
89
90 La valeur de l'attribut //className //est invariable.
91
92 Les valeurs des autres attributs (allowAddr, idPMetadataPath, ...) sont variables selon l'installation.
93 )))
94
95 |(% style="width:247px" %)**Attribut**|(% style="width:1173px" %)**Description**
96 |(% style="width:247px" %)className|(% style="width:1173px" %)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.
97 |(% style="width:247px" %)allowAddr|(% style="width:1173px" %)Adresse IP du serveur.
98 |(% style="width:247px" %)fallbackAuth|(% style="width:1173px" %)La méthode d'authentification de repli
99 |(% style="width:247px" %)idPMetadataPath|(% style="width:1173px" %)Le chemin absolu du fichier XML avec les métadonnées de l’IdP
100 |(% style="width:247px" %)securitySettingsPath|(% style="width:1173px" %)Le chemin absolu du fichier .properties avec les paramètres de sécurité
101 |(% style="width:247px" %)uid|(% style="width:1173px" %)Un des attributs renvoyés par l’IdP dans la réponse SAMLv2 pour identifier l’utilisateur qui s’authentifie. Si cet attribut n’est pas mentionné, le nameId de la réponse SAMLv2 est utilisé pour identifier l’utilisateur.
102 |(% style="width:247px" %)sharedPasswd|(% style="width:1173px" %)Le mot de passe partagé et vérifié à l’authentification. Un hash au format SSHA512 peut être utilisé pour éviter d'écrire le mot de passe dans le fichier en clair (pour générer ce hash un outil comme pwdhash peut être utilisé sous Linux).
103 |(% style="width:247px" %)//ldapForPaths//|(% style="width:1173px" %)//Facultatif//, il s’agit des expressions régulières des URLs dont les ressources sont autorisées à passer la valve, passant ainsi en mode d’authentification LDAP. Exemple : "http:~/~/localhost:8080/.*"
104 |(% style="width:247px" %)//excludedPaths//|(% style="width:1173px" %)//Facultatif,// il s’agit des expressions régulières des chemins dont les ressources sont autorisées à passer la valve, passant ainsi en mode d’authentification LDAP. Exemple : "/.*"
105 |(% style="width:247px" %)//cookieTimeOut//|(% style="width:1173px" %)(((
106 //Facultatif//, il s’agit du temps (en secondes) au bout duquel le cookie SSO expirera. Vaut 1800 secondes (30 minutes) par défaut .
107 Sinon, le cookie expirera après le nombre de secondes mentionné.
108
109 La mention d'une valeur négative signifie que le cookie expirera à la fermeture du navigateur.
110 La mention d'une valeur égale à 0 signifie que le cookie sera directement supprimé (non recommandé).
111
112 Exemple : cookieTimeOut="3600" (1 heure)
113 )))
114 |(% style="width:247px" %)//print_debug//|(% style="width:1173px" %)//Facultatif//, vaut false par défaut, sinon, ajouter print_debug="true" pour des traces plus verbeuses.
115
116 == Ajout du .war correspondant à l’ACS du Service Provider ==
117
118 Ajoutez l’archive **ddacs.war** du dossier **<install DD>/add-ons/valve_saml2/apache-tomcat/webapps** dans le dossier :
119
120 (% class="box" %)
121 (((
122 * sous Linux : **/home/digdash/webapps/default**
123 * sous Windows : **E:/digdash/webapps/default**
124 )))
125
126 (% class="box infomessage" %)
127 (((
128 Il s’agit du point d’entrée ACS du SP accédé par l’IdP.
129 )))
130
131 == Ajout des contraintes de sécurité ==
132
133 Décommentez ou ajoutez les contraintes de sécurité au fichier **web.xml** situé dans le dossier :
134
135 (% class="box" %)
136 (((
137 * sous Linux : **/etc/tomcat9/**
138 * sous Windows : **C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf**
139 )))
140
141 {{code language="XML" cssClass="notranslate"}}
142 <web-app ...>
143 ...
144 <security-role>
145 <role-name>CUSTOM</role-name>
146 </security-role>
147
148 <security-constraint>
149 <display-name>CUSTOM Security Constraint</display-name>
150
151 <web-resource-collection>
152 <web-resource-name>Protected Area</web-resource-name>
153 <url-pattern>/*</url-pattern>
154 </web-resource-collection>
155
156 <auth-constraint>
157 <role-name>CUSTOM</role-name>
158 </auth-constraint>
159 </security-constraint>
160
161 <security-constraint>
162 <web-resource-collection>
163 <web-resource-name>Non-Protected Area</web-resource-name>
164 <url-pattern>/vjdbc</url-pattern>
165 </web-resource-collection>
166 </security-constraint>
167 ...
168 </web-app>
169 {{/code}}
170
171
172 = Configuration des applications =
173
174 Pour cela, modifiez le fichier **digdash.properties** dans **<install DD> **ou** /etc/digdash** (sous Linux) ou dans le dossier que vous auriez configuré.
175
176
177 == Configuration du Serveur (ddenterprise.war) ==
178
179 Dans le fichier **digdash.properties** :
180
181 Dans l'encadré //ddenterpriseapi.war//, recherchez et décommentez les lignes suivantes avec les valeurs indiquées :
182
183 {{code language="properties" cssClass="notranslate"}}
184 ddenterpriseapi.authMethod=External
185 {{/code}}
186
187
188 == Configuration du Tableau de bord (digdash_dashboard.war) ==
189
190 Dans le fichier **digdash.properties** :
191
192 Dans l'encadré //digdash_dashbord.war//, recherchez et décommentez les lignes suivantes avec les valeurs indiquées :
193
194 {{code language="properties" cssClass="notranslate"}}
195 digdash_dashboard.SERVERURL=http://localhost:8080
196 digdash_dashboard.DOMAIN=ddenterpriseapi
197 digdash_dashboard.FORCEDOMAIN=true
198 digdash_dashboard.FORCESERVERURL=true
199 digdash_dashboard.sharedPasswd=<la valeur de l'attribut sharedPasswd dans l'élément Valve>
200 {{/code}}
201
202 (% class="box infomessage" %)
203 (((
204 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.
205 )))
206
207
208 == Configuration du Studio (studio.war) ==
209
210 Dans le fichier **digdash.properties** :
211
212 Dans l'encadré //studio.war//, recherchez et décommentez les lignes suivantes avec les valeurs indiquées :
213
214 {{code language="properties" cssClass="notranslate"}}
215 studio.SERVERURL=http://localhost:8080
216 studio.DOMAIN=ddenterpriseapi
217 studio.FORCEDOMAIN=true
218 studio.FORCESERVERURL=true
219 studio.PUBLICSERVERURL=<votre adresse URL publique>
220 studio.sharedPasswd=<la valeur de l'attribut sharedPasswd dans l'élément Valve>
221 {{/code}}
222
223 (% class="box infomessage" %)
224 (((
225 Le paramètre //studio.PUBLICSERVERUR//L est optionnel dans le cadre de l'installation d'un SSO.
226
227 La valeur d’exemple pour ce paramètre 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.
228 )))
229
230 == Configuration de l’Identity Provider ==
231
232 L’IdP devra enregistrer DigDash en tant que SP dans sa liste de SP pour que DigDash puisse tirer profit de l’Authentification unique.
233 L’IdP devra notamment se servir du fichier métadonnées fourni par le SP pour sa configuration. Celui-ci mentionne, entre autres choses, les points d’entrées du SP DigDash (URL ACS).
234
235 == Métadonnées du Service Provider ==
236
237 Les métadonnées du SP seront soit fournies directement et physiquement (par email, par clé USB, etc.) soit par génération via le SP. En effet, elles seront accessibles via l’URL suivante une fois la valve mise en place :
238
239 (% class="box infomessage" %)
240 (((
241 https:~/~/<adresse du serveur DigDash>:<port>/?spmetadata=display
242 )))
243
244 = Configuration du Service Provider =
245
246 Le SP devra charger dans son application les métadonnées de l’IdP.
247
248 == Métadonnées de l’Identity Provider ==
249
250 Placez le fichier au format XML fourni par l’IdP correspondant aux métadonnées de l’IdP dans le répertoire de votre choix.
251
252 (% class="box infomessage" %)
253 (((
254 Le chemin absolu de ce fichier devra être connu et devra être renseigné comme valeur de l’attribut //idPMetadataPath //de l'élément Valve dans Tomcat.
255 )))
256
257 Dans le cas où le fichier .xml des metadata n'est pas lu par l'IdP, les paramètres suivants doivent être valorisés comme indiqué ci-dessous :
258
259 * id de l'entité : https:~/~/[serveur_url]/?spmetadata=display
260 * reply : https:~/~/[serveur_url]/ddacs/acs
261
262 = Configuration des paramètres de sécurité =
263
264 Placez le fichier saml2.sec.properties du dossier **<Install DD>/add-ons/valve_saml2/resources_samples** correspondant aux paramètres de sécurité dans le répertoire de votre choix.
265
266 (% class="box infomessage" %)
267 (((
268 Le chemin absolu de ce fichier devra être connu est devra être renseigné comme valeur de l’attribut //securitySettingsPath //de l'élément Valve dans Tomcat.
269 )))
270
271 Les tableaux suivants présentent les différentes propriétés pour paramétrer la sécurité :
272
273 == Propriétés générales ==
274
275 |(% style="width:279px" %)**Propriété générale**|(% style="width:808px" %)**Description**|(% style="width:332px" %)**Valeurs possibles**
276 |(% style="width:279px" %)onelogin.saml2.strict|(% style="width:808px" %)Si à true, le SP et en mode strict et rejettera tous les messages non cryptés ou non signés si le SP s’attend à ce qu’ils le soient.|(% style="width:332px" %)true,false
277 |(% style="width:279px" %)onelogin.saml2.debug|(% style="width:808px" %)Si à true, le mode debug sera activé.|(% style="width:332px" %)true,false
278
279 == Propriétés du Service Provider ==
280
281 (% class="box infomessage" %)
282 (((
283 Les valeurs par défaut de ces propriétés sont automatiquement chargées. Vous pouvez décommenter certaines propriétés au besoin pour expliciter des valeurs.
284 )))
285
286 |(% style="width:364px" %)**Propriétés du Service Provider **|(% style="width:592px" %)**Description**|(% style="width:507px" %)**Valeurs possibles**
287 |(% style="width:364px" %)onelogin.saml2.sp.entityid|(% style="width:592px" %)l'identifiant de l'entité Service Provider|?spmetadata=display
288 |(% style="width:364px" %)onelogin.saml2.sp.assertion_consumer_service.url|(% style="width:592px" %)Point d'entrée du SP. Il s'agit de l'URL vers laquelle la <Response> SAML de l'IdP va être retournée.|ddacs/acs
289 |(% style="width:364px" %)onelogin.saml2.sp.assertion_consumer_service.binding|(% style="width:592px" %)(((
290 Liaison de protocole SAML utilisé lors du retour du message <Response>. Onelogin prend en charge pour ce point de terminaison la liaison HTTP-POST uniquement.
291 )))|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
292 |(% style="width:364px" %)onelogin.saml2.sp.single_logout_service.url|(% style="width:592px" %)Spécifie où et comment le message <Logout Response> doit être retourné au demandeur, dans ce cas le SP.|ddacs/slo
293 |(% style="width:364px" %)onelogin.saml2.sp.single_logout_service.binding|(% style="width:592px" %)Liaison de protocole SAML utilisé lors du retour du <LogoutResponse> ou de l'envoi du message <LogoutRequest>. Onelogin prend en charge pour ce point de terminaison la liaison HTTP-Redirect uniquement.|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect
294 |(% style="width:364px" %)onelogin.saml2.sp.nameidformat|(% style="width:592px" %)Spécifie des contraintes sur le NameID à utiliser pour représenter l'utilisateur à authentifier.|urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
295 |(% style="width:364px" %)onelogin.saml2.sp.x509cert|(% style="width:592px" %)La clé publique (ou certificat) du Service Provider.|Cf documentation [[Authentification SAMLv2 - Configuration>>doc:.config_auth_saml2_sec.WebHome]]
296 |(% style="width:364px" %)onelogin.saml2.sp.privatekey|(% style="width:592px" %)La clé privée du Service Provider.|Cf documentation [[Authentification SAMLv2 - Configuration>>doc:.config_auth_saml2_sec.WebHome]]
297
298 == Propriétés de sécurité ==
299
300 |(% style="width:411px" %)**Propriétés de sécurité**|(% style="width:690px" %)**Description**|(% style="width:319px" %)**Valeurs possibles**
301 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.nameid_encrypted|(% style="width:690px" %)Indique si le nameID du <samlp:logoutRequest> envoyé par le SP doit être crypté.|(% style="width:319px" %)true,false
302 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.authnrequest_signed|(% style="width:690px" %)Indique si les messages <samlp:AuthnRequest> envoyés par ce SP sont signés. Les métadonnées indiquent cette information.|(% style="width:319px" %)true,false
303 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.logoutrequest_signed|(% style="width:690px" %)Indique si les messages <samlp:logoutRequest> envoyés par ce SP sont signés.|(% style="width:319px" %)true,false
304 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.logoutresponse_signed|(% style="width:690px" %)Indique si les messages <samlp:logoutResponse> envoyés par ce SP sont signés.|(% style="width:319px" %)true,false
305 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.want_messages_signed|(% style="width:690px" %)Indique si les réponses doivent être signées.|(% style="width:319px" %)true,false
306 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.want_assertions_signed|(% style="width:690px" %)Indique l’obligation des messages <samlp:Response>, <samlp:LogoutRequest> et <samlp:LogoutResponse> reçus par ce SP d’être signés.|(% style="width:319px" %)true,false
307 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.sign_metadata|(% style="width:690px" %)Indique l’obligation des métadonnées de ce SP d’être signées.|(% style="width:319px" %)true,false
308 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.want_assertions_encrypted|(% style="width:690px" %)Indique l’obligation des assertions reçues par ce SP d’être cryptés.|(% style="width:319px" %)true,false
309 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.want_nameid_encrypted|(% style="width:690px" %)Indique l’obligation du nameID reçu par le SP d’être crypté.|(% style="width:319px" %)true,false
310 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.requested_authncontext|(% style="width:690px" %)Contexte d’authentification.|(% style="width:319px" %)urn:oasis:names:tc:SAML:2.0:ac:classes:Password
311 ou chaîne vide si vous ne voulez qu’aucun contexte ne soit envoyé dans la requête.
312 Plusieurs valeurs possibles, séparées par des virgules.
313 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.requested_authncontextcomparison|(% style="width:690px" %)Active la comparaison du contexte d’authentification|(% style="width:319px" %)exact
314 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.want_xml_validation|(% style="width:690px" %)Indique si le SP valide toutes les réponses XML reçues (Si true, la validation n’est effective que si cette propriété et la propriété ‘onelogin.saml2.strict’ valent aussi true).|(% style="width:319px" %)true,false
315 |(% rowspan="1" style="width:411px" %)onelogin.saml2.security.signature_algorithm|(% style="width:690px" %)Algorithme de hachage utilisé pour la signature.|(% style="width:319px" %)[[http:~~/~~/www.w3.org/2000/09/xmldsig#rsa-sha1
316 http:~~/~~/www.w3.org/2000/09/xmldsig#dsa-sha1
317 http:~~/~~/www.w3.org/2001/04/xmldsig-more#rsa-sha256
318 http:~~/~~/www.w3.org/2001/04/xmldsig-more#rsa-sha384
319 http:~~/~~/www.w3.org/2001/04/xmldsig-more#rsa-sha512>>http://www.w3.org/2000/09/xmldsig#rsa-sha1http://www.w3.org/2000/09/xmldsig#dsa-sha1http://www.w3.org/2001/04/xmldsig-more#rsa-sha256http://www.w3.org/2001/04/xmldsig-more#rsa-sha384http://www.w3.org/2001/04/xmldsig-more#rsa-sha512]]
320
321 (% class="wikigeneratedid" id="HConfigurationdel2019environnementJava" %)
322 (% style="color:inherit; font-family:inherit; font-size:max(23px, min(29px, 12.3333px + 1.38889vw))" %)Configuration des Logs de la valve SAML 2
323
324 Dans le fichier server.xml (situé dans le dossier /etc/tomcat9/ sous Linux ou C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf sous Windows), à l'intérieur de la balise **host**, rajoutez la valve suivante pour avoir des logs :
325
326 {{code}}
327 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
328                prefix="localhost_access_log_test_header" suffix=".log"
329                 pattern="%h %l %u %t &quot;%r&quot; %s %b - X-Forwarded-Proto: %{X-Forwarded-Proto}i - X-Forwarded-For: %{X-Forwarded-For}i - X-Forwarded- Host : %{X-Forwarded-Host }i" ></Valve>
330 {{/code}}
331
332 Dans l'exemple ci-dessus, les fichiers log commenceront par "localhost_access_log_test_header". Le préfixe peut être modifié comme souhaité.
333 Les logs se trouveront dans le dossier Tomcat.
334
335 == Niveau de Logs ==
336
337 Vous pouvez personnaliser le niveau de log pour la valve d’authentification.
338
339 Par défaut, seules les erreurs sont loguées. Si toutefois vous voulez avoir plus de détails sur le déroulé des actions et échanges entre les différentes entités, vous pouvez affecter la valeur ‘DEBUG’ au lieu de ‘ERROR’ dans le fichier log4j.properties qui a été importé dans le dossier lib de Tomcat.
340
341 log4j.logger.com.onelogin.saml2=**ERROR**, stdout
342 devient
343 log4j.logger.com.onelogin.saml2=**DEBUG**, stdout
344
345 = Cohabitation SAMLv2 et LDAP DigDash (facultatif) =
346
347 Il est possible de faire cohabiter l'authentification directe via l'annuaire LDAP DigDash alors que la méthode SAMLv2 est mise en place sur votre serveur DigDash.
348
349 == Configuration préalable ==
350
351 Dans le fichier **digdash.properties** :
352
353 Dans l'encadré //studio.war//, recherchez et décommentez les lignes suivantes avec les valeurs indiquées :
354
355 {{code language="properties" cssClass="notranslate"}}
356 studio.allowLoginForm=true
357 {{/code}}
358
359 Dans l'encadré //digdash_dashboard.war//, recherchez et décommentez les lignes suivantes avec les valeurs indiquées :
360
361 {{code language="properties" cssClass="notranslate"}}
362 digdash_dashboard.allowLoginForm=true
363 {{/code}}
364
365
366 == Activation du mode LDAP DigDash ==
367
368 Pour activer le mode d'authentification en mode LDAP DigDash, il suffit de rajouter dans l'URL le paramètre **loginForm **avec la valeur (% style="color:#27ae60" %)**true**(%%).
369
370 Ainsi, s'il y a besoin de s'authentifier au tableau de bord directement à l'aide de vos identifiants LDAP DigDash alors que du SAMLv2 déjà installé, l'URL à utiliser sera de la forme :
371
372 (% class="box" %)
373 (((
374 https:~/~/<host>:<port>/digdash_dashboard/index.html?**loginForm**=(% style="color:#27ae60" %)**true**
375 )))
376
377 (% class="box warningmessage" %)
378 (((
379 (% style="color:#e67e22" %)**Attention **(%%): de manière générale, le paramètre loginForm ainsi que sa valeur seront à mentionner sur chaque domaine indépendemment les uns des autres (ddenterpriseapi pour le serveur, digdash_dashboard pour le tableau de bord, studio pour le studio web) pour s'authentifier via le LDAP.
380 Ainsi, activer le paramètre loginForm sur le tableau de bord (domaine digdash_dashbord) ne l'activera pas automatiquement sur le Studio Web (domaine studio) par exemple.
381 )))
382
383 == Ré-activation du mode SAMLv2 ==
384
385 Pour désactiver le mode LDAP DigDash et ainsi retourner à un état où c'est l'authentification SSO SAMLv2 qui est prise en compte, il suffit de mentionner le paramètre **loginForm **avec la valeur (% style="color:#c0392b" %)**false**(%%).
386 Ainsi, s'il y a besoin de s'authentifier au tableau de bord via SAMLv2 alors qu'une authentification directe via le LDAP DigDash a précédemment eu lieu, l'URL à utiliser sera de la forme :
387
388 (% class="box" %)
389 (((
390 https:~/~/<host>:<port>/digdash_dashboard/index.html?**loginForm**=(% style="color:#c0392b" %)**false**
391 )))
392
393 La note d'avertissement précédente est également à prendre en compte dans ce cas.
394
395
396 == Utilisation d'un reverse proxy ==
397
398 Dans le cas de l'utilisation d'un reverse proxy, la valve remote IP  doit être adaptée.
399
400 Ourvrir le fichier **server.xml **situé dans le dossier :
401
402 (% class="box" %)
403 (((
404 * sous Linux : **/etc/tomcat9/**
405 * sous Windows : **C:\Program Files\Apache Software Foundation\Tomcat 9.0\conf**
406 )))
407
408 Dans ce fichier, la valve remote IP est renseignée comme suit :
409
410 {{{<Valve className="org.apache.catalina.valves.RemoteIpValve"
411   internalProxies="127\.0\.[0-1]\.1"
412   remoteIpHeader="x-forwarded-for"
413   requestAttributesEnabled="true"
414   protocolHeader="x-forwarded-proto"
415   protocolHeaderHttpsValue="https"/>
416 }}}
417
418 Remplacer la valeur de la propriété **internalProxies** par la valeur de l'IP du reverse proxy comme indiqué ci-dessous.
419
420 {{{<Valve className="org.apache.catalina.valves.RemoteIpValve"
421   internalProxies="<IP DU REVERSE PROXY>"
422   remoteIpHeader="x-forwarded-for"
423   requestAttributesEnabled="true"
424   protocolHeader="x-forwarded-proto"
425   protocolHeaderHttpsValue="https"/>}}}
426
427 = Lexique =
428
429 Nous appellerons dans ce document :
430
431 * **ACS :** Assertion Consumer Service ou Service consommateur d’assertion
432 * **IdP :** l’Identity Provider ou le Fournisseur d’identités
433 * **SLO :** Single LogOut ou Déconnexion unique
434 * **SP :** le Service Provider ou le Fournisseur de services (DigDash)
435 * **SSO :** Single Sign On ou Authentification unique ; SAMLv2 est une méthode SSO
436
437 = Références =
438
439 [[https:~~/~~/www.oasis-open.org>>https://www.oasis-open.org]]
440
441 //DigDash utilise la librairie OpenSource onelogin de OneLogin Inc pour supporter la méthode d’authentification SAMLv2.//
442
443 [[https:~~/~~/www.onelogin.com/>>https://www.onelogin.com/]]
444
445 [[https:~~/~~/github.com/onelogin/java-saml>>https://github.com/onelogin/java-saml]]