Code source wiki de Anonymisation des Urls

Version 21.1 par Aurelie Bertrand le 2025/04/30 09:14

Masquer les derniers auteurs
fperrier 11.2 1 Ce document décrit comment s'authentifier automatiquement sans l'utilisation du paramètre **pass** dans les différents modules de DigDash Enterprise (tableaux de bords, pages de configuration).
jhurst 1.1 2
Aurelie Bertrand 17.1 3 = Authentification via un jeton AuthToken =
4
fperrier 11.2 5 Le principe est de demander, une fois authentifié, un jeton permettant lors de son utilisation de créer une nouvelle session **basée sur celle demandée par la session courante**.
Aurelie Bertrand 17.1 6 Ce jeton permet de créer une session automatique sans avoir à spécifier le mot de passe de l'utilisateur.
fperrier 11.2 7 Ce jeton est à usage unique, le même token ne peut être utilisé pour créer plus d'une session. Pour créer plusieurs sessions, plusieurs jetons sont nécessaires.
jhurst 1.1 8
abertrand 14.1 9 (% class="box infomessage" %)
10 (((
abertrand 15.1 11 ℹ Le jeton est à usage unique mais n'a pas de durée de validité. Tant que la session initiale n'a pas expiré, le jeton est utilisable.
abertrand 14.1 12 )))
abertrand 13.1 13
Aurelie Bertrand 18.2 14 Pour s'authentifier via un jeton AuthToken :
jhurst 1.1 15
Aurelie Bertrand 17.1 16 1. Connectez-vous via la page de connexion ou le passage de l'utilisateur et mot de passe.
17 1. Effectuez la demande de jeton par le biais d'un web service dont l'url est sous la forme suivante :
Aurelie Bertrand 17.2 18 [[http:~~/~~/localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthToken>>url:http://http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthToken]]
Aurelie Bertrand 17.1 19 Le paramètre method=**newAuthToken **permet au retour de cette url de récupérer le nouveau jeton ainsi généré.
jhurst 1.1 20
Aurelie Bertrand 16.1 21 (% class="box warningmessage" %)
22 (((
23 ❗Le mot de passe doit être correctement encodé pour que l'URL fonctionne.
24 )))
25
Aurelie Bertrand 17.1 26 (% start="3" %)
27 1. Utilisez alors le jeton dans une URL afin de créer une session automatique sans les information d'authentification.
Aurelie Bertrand 18.1 28 Par exemple, pour un tableau de bord :  [[http:~~/~~/localhost:8080/digdash_dashboard/index.html?user=admin&authToken=token>>http://localhost:8080/digdash_dashboard/index.html?user=admin&authToken=token]]
Aurelie Bertrand 17.1 29 Le paramètre **authToken **est le jeton renvoyé lors de l'étape pécédente.
jhurst 1.1 30
Aurelie Bertrand 17.1 31 == Avancé : Emprunt d'identité ==
fperrier 11.2 32
fperrier 12.1 33 La méthode **newAuthToken **de l'API renvoie un jeton pour la session courante et l'utilisateur courant. Il faut donc avoir une session de cet utilisateur pour pouvoir appeler cette méthode et utiliser son résultat dans une URL.
34
Aurelie Bertrand 17.2 35 Dans certains cas, c'est une contrainte et il est intéressant de pouvoir ouvrir une session pour un autre utilisateur (cible), à partir d'un utilisateur source. Il existe la méthode **newAuthTokenAs **qui prend un paramètre supplémentaire **userId**.
fperrier 12.1 36
Aurelie Bertrand 20.1 37 Les pré-requis suivants sont nécessaires pour pouvoir utiliser cette méthode :
fperrier 12.1 38
39 * Le système doit avoir la propriété **PROP_NEWAUTHTOKENAS **= true dans **system.xml**
Aurelie Bertrand 17.2 40 * L'utilisateur source doit avoir l'autorisation **Admin > Permettre l'emprunt d'identité**.
fperrier 12.1 41
Aurelie Bertrand 17.2 42 Une fois ces pré-requis remplis, procédez comme suit :
fperrier 12.1 43
Aurelie Bertrand 17.2 44 1. Connectez-vous via la page de connexion ou le passage de l'utilisateur et mot de passe.
45 1. Effectuez la demande de jeton par le biais d'un web service dont l'url est sous la forme suivante :
Aurelie Bertrand 18.1 46 [[http:~~/~~/localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthTokenAs&userId=utilsateurCible>>http://http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthTokenAs&userId=userCible]]
47 Le paramètre method=**newAuthTokenAs **permet au retour de cette url de récupérer le nouveau jeton ainsi généré.
Aurelie Bertrand 17.2 48
49 (% class="box warningmessage" %)
50 (((
51 ❗Le mot de passe doit être correctement encodé pour que l'URL fonctionne.
52 )))
53
54 (% start="3" %)
55 1. Utilisez alors le jeton dans une URL afin de créer une session automatique sans les information d'authentification.
Aurelie Bertrand 18.1 56 Par exemple, pour un tableau de bord :  [[http:~~/~~/localhost:8080/digdash_dashboard/index.html?user=utilisateurCible&authToken=token>>http://localhost:8080/digdash_dashboard/index.html?user=userCible&authToken=token]]
Aurelie Bertrand 17.2 57 Le paramètre **authToken **est le jeton renvoyé lors de l'étape pécédente.
Aurelie Bertrand 18.2 58
59 = Authentification via un jeton JWT =
60
Aurelie Bertrand 19.1 61 Un jeton **JWT (JSON Web Token)** peut être utilisé pour s'authentifier via les en-têtes HTTP dans votre requête.
Aurelie Bertrand 18.2 62
Aurelie Bertrand 19.1 63 Ce jeton JWT est généré via l'API REST DigDash. Consultez le paragraphe [[Créer un jeton JWT >>doc:Digdash.API.DD_API.WebHome||anchor="JWT"]]pour plus de détails.
64
65 Pour une requête curl, on
66
67 {{{curl -H "Authorization: Bearer <JWT>" "http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthToken" }}}
68
69 Placer un JWT dans une URL l’expose aux journaux, à l’historique du navigateur et aux référents. L’utilisation du header Authorization: Bearer <token> est la méthode recommandée pour protéger les données sensibles tout en évitant leur exposition.
70
71 Pour anonymiser une URL tout en utilisant une clé API dans le header, vous ne transmettez pas la clé dans l’URL (ce qui serait visible et non sécurisé), mais uniquement dans les en-têtes HTTP. Cela évite d’exposer la clé dans les journaux de requêtes ou les navigateurs.
72
Aurelie Bertrand 18.2 73