Authentification par jeton de lapi
Pour
renforcer la sécurité de vos interactions avec l’API Digital Platform, nous avons mis en place un système d’authentification basé sur des jetons signés. Ce système utilise des jetons Web JSON (JWT) pour garantir que vos sessions sont aussi sécurisées que possible. Suivez ces instructions et vous devriez être opérationnel avec JWT en un rien de temps.
Remarque :
Cette fonctionnalité est actuellement disponible pour tous les utilisateurs de l’API Digital Platform. Bien que l’authentification basée sur le jeton JWT offre une sécurité supplémentaire, son utilisation est actuellement encouragée mais pas obligatoire. Pour plus d’informations sur les processus d’authentification, consultez Service d’authentification.
Qu’est-ce que JWT ?
Sur le site Web de JWT :
« JSON Web Token (JWT) est une norme ouverte (RFC 7519) qui définit un moyen compact et autonome de transmettre des informations en toute sécurité entre les parties en tant qu’objet JSON.
Xandr fournit des services d’API REST pour vous permettre de communiquer avec notre système par le biais de requêtes en ligne de commande et de fichiers JSON, et renvoie des réponses sous forme de JSON. La mise en place d’une norme qui vous permet de transmettre ces informations en toute sécurité offre une meilleure protection de vos données et de l’ensemble du système Xandr.
De plus, les tokens permettent une meilleure gestion des connexions des utilisateurs. Lorsque votre mot de passe expire, vous devez immédiatement passer à un nouveau mot de passe. Avec les jetons, vous pouvez avoir plusieurs jetons à la fois, de sorte que lorsqu’un jeton approche de l’expiration, vous disposez d’une période de transition qui vous donne le temps de mettre à jour vos informations de connexion.
Pour utiliser les jetons JWT, vous devez disposer d’un générateur de jetons. Vous pouvez générer des jetons JWT en utilisant l’une des nombreuses bibliothèques disponibles sur le site Web de JWT.
Préparation à l’utilisation des jetons
Avant de pouvoir utiliser des jetons, vous devrez vous connecter à l’aide de votre mot de passe pour recueillir des informations et configurer vos jetons dans le système de Xandr. Une fois votre jeton JWT enregistré, vous n’aurez plus besoin de vous connecter avec un mot de passe.
Commencez par vous authentifier et récupérer un jeton de connexion initial :
le nom d’utilisateur et le mot de passe sont vos identifiants de connexion standard.
La réponse de cet appel comprendra un jeton, qui ressemblera à ceci :
vous utiliserez ce jeton pour accéder au système jusqu’à ce que vous ayez enregistré votre clé publique (que nous créerons dans un instant).
Ensuite, vous devez récupérer votre ID utilisateur. Récupérez votre ID utilisateur en appelant le service utilisateur :
En tant qu’utilisateur actuellement connecté, vous pouvez également utiliser cette commande pour trouver votre ID :
Notez l’ID qui est renvoyé, vous l’utiliserez plus tard dans un fichier JSON pour configurer votre jeton.
Créer des clés privées et publiques
Remarque
Information
L’administrateur réseau est le rôle de plate-forme requis pour créer une clé publique pour un compte donné.
Votre clé privée est utilisée pour signer vos demandes d’authentification. Une clé privée est censée être exactement cela : privée. Vous ne voulez pas partager cette clé avec qui que ce soit. Exécutez cette commande pour créer votre clé privée :
- openssl : C’est l’outil de commande qui va créer un fichier contenant votre clé privée. Il implémente les protocoles de sécurité Secure Sockets Layer et Transport Layer.
- genrsa : La commande qui indique à openssl de générer une clé privée. Celui-ci utilise le cryptosystème RSA.
- : Insérez la clé privée dans le fichier nommé .
- : La taille, en bits, de la clé privée. Si vous omettez ce nombre, la valeur par défaut est . Nous recommander une valeur de .
Le fichier remplacera votre mot de passe en tant que secret qui protège votre compte API.
Utilisez votre clé privée pour générer une clé publique :
- rsa : commande qui traite les clés RSA.
- : Le fichier contenant la clé privée à utiliser comme entrée pour créer la clé publique.
- : Cette option spécifie qu’une clé publique doit être générée plutôt qu’une clé privée.
- > : Le fichier qui contiendra votre clé publique.
Votre clé publique sera partagée avec l’API et sera utilisée pour vérifier que votre clé privée a été utilisée pour signer le JWT.
Remplacer les caractères de saut de ligne
Votre clé publique contient des sauts de ligne. Étant donné que cette clé sera envoyée à l’API dans le cadre d’une charge utile JSON, vous devez remplacer les sauts de ligne par des caractères de saut de ligne : \n. Vous pouvez soit le faire à la main, puis copier la clé dans votre fichier JSON, ou vous pouvez exécuter la commande suivante et copier la sortie :
Remarque
Selon votre environnement de ligne de commande, il se peut que la clé s’affiche simplement avec des sauts de ligne plutôt que le caractère \n. Si cela se produit, vous devrez entrer manuellement un \n pour remplacer chaque saut de ligne lorsque vous copiez la clé dans votre fichier JSON.
Créez votre fichier JSON de clé publique
Créez un fichier JSON comme suit :
Remplacez-le par l’ID utilisateur que nous avons récupéré précédemment.
Pour , collez la valeur complète de la clé publique, y compris le texte et . N’oubliez pas de remplacer tous les sauts de ligne par \n. Par exemple :
Enregistrez le fichier JSON. Pour cet exemple, nous avons nommé le fichier .
Enregistrez votre clé publique
Exécutez la commande suivante pour enregistrer votre clé publique :
Notez que nous avons utilisé le même jeton dans notre appel à la commande public-key que nous avons utilisé lors de notre précédent appel au service utilisateur.
Si votre clé a été enregistrée avec succès, vous recevrez une réponse similaire à celle-ci :
Créer une signature JWT
Générateur JWT Exemples de pseudo-code
Les exemples ci-dessous supposent que l’utilisateur a défini certaines variables sur des informations spécifiques à la clé utilisée pour s’authentifier. Par exemple, la variable utilisée pour l’en-tête dans le code ci-dessous contiendrait la valeur du champ utilisé dans l’objet JSON lors de l’enregistrement de la clé publique avec Xandr (voir Enregistrer votre clé publique ci-dessus). La variable utilisée pour la valeur d’en-tête serait mappée au nom d’utilisateur associé à la clé, etc.
Exemple Python
Exemple NodeJS
S’authentifier avec un JWT
Il est maintenant temps de s’authentifier à l’aide de notre clé privée et de votre script de génération JWT. Exécutez une commande similaire à celle-ci pour créer votre JWT et vous authentifier :
« JWT generator » est le script que vous avez créé avec une bibliothèque JWT qui génère le jeton. Il y a des exemples de pseudo-code ci-dessus de ce qui peut être dans ce générateur JWT. Vous pouvez exécuter votre script séparément et passer simplement le jeton lui-même à cette commande.
Cela renverra une réponse contenant votre nouveau jeton :
Utilisez votre jeton
Vous pouvez maintenant utiliser le jeton renvoyé par votre appel JWT pour authentifier tous les appels dans l’API. Par exemple, voici le même appel au service d’API utilisateur à l’aide de notre nouveau jeton :
Nouvelle session
Une fois votre session expirée, vous devez vous authentifier à nouveau. Mais à partir de ce moment, vous pouvez sauter toutes les étapes de la section précédente jusqu’à la création d’un jeton JWT. Cela signifie que pour chaque session, vous devrez créer un nouveau jeton JWT et utiliser ce jeton pour authentifier le reste de vos appels d’API. Vous ne le ferez pas devez utiliser à nouveau votre mot de passe.
Désactiver votre clé publique
Vous pouvez supprimer l’accès à l’API en désactivant le . Pour désactiver une clé, créez un fichier JSON comme ceci :
Comme vous pouvez le voir, ce fichier définit simplement le champ sur , ce qui indique que le n’est plus . Exécutez la commande suivante pour désactiver le :
Dans la commande, vous devez inclure le JSON avec le champ défini sur (dans ce cas, nous avons inclus ce JSON dans le fichier ). Vous devez également inclure le et le dans la chaîne de requête ().
Vous pouvez trouver le pour un utilisateur avec une simple commande :
Vous pouvez facilement réactiver la touche avec la même commande que nous avons utilisée pour la désactiver. Il suffit de changer le JSON pour qu’il soit défini sur .