Anonymisation des Urls
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).
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.
Ce jeton permet de créer une session automatique sans avoir à spécifier le mot de passe de l'utilisateur.
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.
Il est possible de s'authentifier de 3 manières différentes pour effectuer la demande de jeton :
- Connecté avec l'utilisateur et le mot de passe :
La demande de jeton s'effectue par le biais d'un web service dont l'url est sous la forme suivante :
http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthToken
- Via un jeton JWT :
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.
Ce jeton JWT est généré via l'API REST DigDash. Consultez le paragraphe Créer un jeton JWT pour plus de détails.
La requête a la forme suivante :curl -H "Authorization: Bearer <JWT>" "http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthToken"dans laquelle, <JWT> est à remplacer par le jeton JWT obtenu précédemment.
Via une clé API :
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.
Cette clé API est généré via l'API REST DigDash. Consultez le paragraphe Créer un jeton JWT pour plus de détails.
La requête a la forme suivante :curl -H "X-API-KEY: <apikey>" "http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthToken"
// <apikey> est à remplacer par la clé API obtenue précédemment
Pour s'authentifier via un jeton AuthToken :
- Connectez-vous via la page de connexion ou le passage de l'utilisateur et mot de passe.
- Effectuez la demande de jeton par le biais d'un web service dont l'url est sous la forme suivante :
http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthToken
Le paramètre method=newAuthToken permet au retour de cette url de récupérer le nouveau jeton ainsi généré.
- Utilisez alors le jeton dans une URL afin de créer une session automatique sans les information d'authentification.
Par exemple, pour un tableau de bord : http://localhost:8080/digdash_dashboard/index.html?user=admin&authToken=token
Le paramètre authToken est le jeton renvoyé lors de l'étape pécédente.
Avancé : Emprunt d'identité
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.
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.
Les pré-requis suivants sont nécessaires pour pouvoir utiliser cette méthode :
- Le système doit avoir la propriété PROP_NEWAUTHTOKENAS = true dans system.xml
- L'utilisateur source doit avoir l'autorisation Admin > Permettre l'emprunt d'identité.
Une fois ces pré-requis remplis, procédez comme suit :
- Connectez-vous via la page de connexion ou le passage de l'utilisateur et mot de passe.
- Effectuez la demande de jeton par le biais d'un web service dont l'url est sous la forme suivante :
http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?user=admin&pass=admin&method=newAuthTokenAs&userId=utilsateurCible
Le paramètre method=newAuthTokenAs permet au retour de cette url de récupérer le nouveau jeton ainsi généré.
- Utilisez alors le jeton dans une URL afin de créer une session automatique sans les information d'authentification.
Par exemple, pour un tableau de bord : http://localhost:8080/digdash_dashboard/index.html?user=utilisateurCible&authToken=token
Le paramètre authToken est le jeton renvoyé lors de l'étape pécédente.
Authentification via un jeton JWT
Un jeton JWT (JSON Web Token) peut être utilisé pour s'authentifier via les en-têtes HTTP dans votre requête.
Ce jeton JWT est généré via l'API REST DigDash. Consultez le paragraphe Créer un jeton JWT pour plus de détails.
Pour une requête curl, on
curl -H "Authorization: Bearer <JWT>" "http://localhost:8080/ddenterpriseapi/DDEnterpriseServlet?method=newAuthToken"
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.
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.