Code source wiki de Anonymisation des Urls

Modifié par Aurelie Bertrand le 2025/05/15 16:23

Masquer les derniers auteurs
Aurelie Bertrand 40.1 1 Ce document décrit comment s'authentifier automatiquement dans les différents modules de DigDash Enterprise (tableaux de bord, pages de configuration) sans utiliser le paramètre **pass**.
jhurst 1.1 2
Aurelie Bertrand 21.2 3 (% class="wikigeneratedid" id="HAuthentificationviaunjetonAuthToken" %)
fperrier 11.2 4 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 5 Ce jeton permet de créer une session automatique sans avoir à spécifier le mot de passe de l'utilisateur.
fperrier 11.2 6 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 7
abertrand 14.1 8 (% class="box infomessage" %)
9 (((
abertrand 15.1 10 ℹ 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 11 )))
abertrand 13.1 12
Aurelie Bertrand 23.1 13 = Effectuer la demande de jeton AuthToken =
Aurelie Bertrand 21.2 14
Aurelie Bertrand 23.1 15 Il est possible de s'authentifier de 3 manières différentes pour effectuer la demande de jeton.
16
Aurelie Bertrand 21.2 17 * **Connecté avec l'utilisateur et le mot de passe : **
18 La demande de jeton s'effectue par le biais d'un web service dont l'url est sous la forme suivante :
Aurelie Bertrand 28.1 19 [[http:~~/~~/localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthToken>>http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthToken]]
Aurelie Bertrand 22.1 20
21 (% class="box warningmessage" %)
22 (((
23 ❗Le mot de passe doit être correctement encodé pour que l'URL fonctionne.
24 )))
25
Aurelie Bertrand 42.1 26 * **Via une autorisation basique :**(((
Aurelie Bertrand 46.1 27 Avec curl en utilisant l'option -u : le mot de passe vous sera demandé après exécution de la requête.
Aurelie Bertrand 42.1 28
29 {{code}}
30 curl -u <user> http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthToken
31 {{/code}}
32
Aurelie Bertrand 46.1 33 En spécifiant le header soi-même : la requête a la forme suivante :
Aurelie Bertrand 42.1 34
35 {{code}}
36 curl -H 'Authorization: Basic <base64(user:pass)>' http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthToken
37 {{/code}}
38 )))
39
Aurelie Bertrand 21.2 40 * **Via un jeton JWT : **(((
41 La demande de jeton s'effectue via une requête. Le jeton JWT (JSON Web Token) est spécifié dans l'en-tête HTTP pour s'authentifier.
Aurelie Bertrand 50.1 42 Ce jeton JWT est généré via l'API REST DigDash sans utilisateur cible défini (tagertUser). Consultez le paragraphe [[Créer un jeton JWT>>doc:Digdash.API.DD_API.WebHome||anchor="JWT"]] pour plus de détails.
Aurelie Bertrand 23.1 43 La requête a la forme suivante (exemple avec une requête curl) :
Aurelie Bertrand 22.1 44
45 {{code language="C"}}
46 curl -H "Authorization: Bearer <JWT>" "http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthToken"
47 {{/code}}
48
Aurelie Bertrand 23.1 49 dans laquelle, //**<JWT>**// est à remplacer par le jeton JWT obtenu précédemment.
Aurelie Bertrand 21.2 50 )))
51 * (((
52 **Via une clé API :**
53 La demande de clé API s'effectue via une requête. La clé API est spécifiée dans l'en-tête HTTP pour s'authentifier.
Aurelie Bertrand 50.1 54 Cette clé API est générée via l'API REST DigDash sans utilisateur cible défini (targetUser). Consultez le paragraphe [[Créer une clé API>>doc:Digdash.API.DD_API.WebHome||anchor="API"]] pour plus de détails.
Aurelie Bertrand 23.1 55 La requête a la forme suivante (exemple avec une requête curl) :
Aurelie Bertrand 21.2 56
Aurelie Bertrand 22.1 57 {{code language="C"}}
58 curl -H "X-API-KEY: <apikey>" "http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthToken"
59 {{/code}}
Aurelie Bertrand 23.1 60
61 dans laquelle, //**<apikey>**// est à remplacer par la clé API obtenue précédemment.
Aurelie Bertrand 24.1 62 )))
Aurelie Bertrand 23.1 63
Aurelie Bertrand 24.1 64 Le paramètre method=**newAuthToken **permet au retour de l'url ou de la requête de récupérer le nouveau jeton AuthToken ainsi généré.
Aurelie Bertrand 23.1 65
Aurelie Bertrand 24.1 66 = Utiliser le jeton AuthToken dans une URL =
Aurelie Bertrand 21.2 67
Aurelie Bertrand 33.1 68 Une fois le jeton AuthToken récupéré, vous pouvez l'utiliser dans une URL afin de créer une session automatique sans les informations d'authentification.
Aurelie Bertrand 24.1 69
70 Par exemple, pour un tableau de bord, on l'utilisera sous la forme suivante :
Aurelie Bertrand 28.1 71 [[http:~~/~~/localhost:8080/digdash_dashboard/index.html?user=admin&authToken=token>>http://localhost:8080/digdash_dashboard/index.html?user=admin&authToken=token]]
Aurelie Bertrand 27.1 72 Le paramètre **authToken **est à renseigner avec le jeton récupéré lors de l'étape pécédente.
Aurelie Bertrand 24.1 73
Aurelie Bertrand 27.1 74 = Avancé : Emprunt d'identité =
jhurst 1.1 75
fperrier 12.1 76 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.
77
Aurelie Bertrand 17.2 78 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 79
Aurelie Bertrand 20.1 80 Les pré-requis suivants sont nécessaires pour pouvoir utiliser cette méthode :
fperrier 12.1 81
82 * Le système doit avoir la propriété **PROP_NEWAUTHTOKENAS **= true dans **system.xml**
Aurelie Bertrand 17.2 83 * L'utilisateur source doit avoir l'autorisation **Admin > Permettre l'emprunt d'identité**.
fperrier 12.1 84
Aurelie Bertrand 31.1 85 Une fois ces pré-requis remplis, procédez comme suit selon l'authentification utilisée :
fperrier 12.1 86
Aurelie Bertrand 31.1 87 * **Connecté avec l'utilisateur et le mot de passe : **
88 L'utilisateur cible doit être spécifié dans l'url lors de la demande de jeton sous la forme suivante :
Aurelie Bertrand 45.1 89 [[http:~~/~~/localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthTokenAs&userId=utilisateurCible>>http://http//localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthTokenAs&userId=userCible]]
Aurelie Bertrand 44.1 90
91 * **Via une autorisation basique :**(((
Aurelie Bertrand 47.1 92 Avec curl en utilisant l'option -u : le mot de passe vous sera demandé après exécution de la requête.
Aurelie Bertrand 44.1 93
94 {{code}}
Aurelie Bertrand 47.1 95 curl -u <user> http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthTokenAs&userId=utilisateurCible
96
Aurelie Bertrand 44.1 97 {{/code}}
98
Aurelie Bertrand 47.1 99 En spécifiant le header soi-même : la requête a la forme suivante (exemple avec une requête curl) :
Aurelie Bertrand 44.1 100
Aurelie Bertrand 54.1 101 {{code language="C"}}
102 curl -H "Authorization: Bearer <JWT>" "http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthTokenAs&userId=utilisateurCible"
Aurelie Bertrand 47.1 103
Aurelie Bertrand 44.1 104 {{/code}}
105 )))
Aurelie Bertrand 31.1 106 * **Via un jeton JWT :**
Aurelie Bertrand 50.1 107 Ce jeton JWT est généré via l'API REST DigDash sans utilisateur cible défini (tagertUser). Consultez le paragraphe [[Créer un jeton JWT>>doc:Digdash.API.DD_API.WebHome||anchor="JWT"]] pour plus de détails.(((
Aurelie Bertrand 32.1 108 La requête prend la forme suivante (exemple avec une requête curl) :
109
Aurelie Bertrand 54.1 110 {{code language="C"}}
111 curl -H "Authorization: Bearer <JWT>" "http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthTokenAs&userId=utilisateurCible"
Aurelie Bertrand 32.1 112 {{/code}}
Aurelie Bertrand 52.1 113
114 dans laquelle, //**<JWT>**// est à remplacer par le jeton JWT obtenu précédemment.
Aurelie Bertrand 32.1 115 )))
Aurelie Bertrand 31.1 116 * (((
117 **Via une clé API :**
Aurelie Bertrand 50.1 118 Cette clé API est générée via l'API REST DigDash sans utilisateur cible défini (targetUser). Consultez le paragraphe [[Créer une clé API>>doc:Digdash.API.DD_API.WebHome||anchor="API"]] pour plus de détails.
Aurelie Bertrand 33.1 119 La requête prend la forme suivante (exemple avec une requête curl) :
Aurelie Bertrand 31.1 120
Aurelie Bertrand 33.1 121 {{code language="C"}}
Aurelie Bertrand 54.1 122 curl -H "X-API-KEY: <apikey>" "http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthTokenAs&userId=utilisateurCible"
123
Aurelie Bertrand 33.1 124 {{/code}}
Aurelie Bertrand 53.1 125
126 dans laquelle, //**<apikey>**// est à remplacer par la clé API obtenue précédemment. 
Aurelie Bertrand 17.2 127 )))
128
Aurelie Bertrand 33.1 129 Le paramètre method=**newAuthTokenAs **permet au retour de l'url ou de la requête de récupérer le nouveau jeton AuthToken ainsi généré.
Aurelie Bertrand 18.2 130
Aurelie Bertrand 33.1 131 Vous pouvez alors utiliser le jeton dans une URL afin de créer une session automatique sans les informations d'authentification.
Aurelie Bertrand 36.1 132 Par exemple, pour un tableau de bord, sous la forme suivante :
Aurelie Bertrand 34.1 133 [[http:~~/~~/localhost:8080/digdash_dashboard/index.html?user=utilisateurCible&authToken=token>>http://localhost:8080/digdash_dashboard/index.html?user=userCible&authToken=token]]
Aurelie Bertrand 33.1 134 Le paramètre **authToken **est à renseigner avec le jeton récupéré lors de l'étape pécédente.