Une meilleure authentification Twilio avec les clés API

March 01, 2021
Rédigé par
Révisé par
Diane Phan
Twilion

Twilio génère un identifiant (SID) de compte et un token d'authentification lorsque vous créez un compte Twilio. Avec ces informations d'identification, vous pouvez exécuter toutes les fonctions disponibles dans l'API Twilio.

Chaque fois que vous remettez le SID du compte et le token d'authentification à un terminal ou à un collègue, vous augmentez le risque que ces informations d'identification soient compromises. Heureusement, Twilio offre des fonctionnalités permettant de limiter ce risque. Cet article couvre :

  • tokens d'authentification
  • Sous-comptes
  • Les clés API

tokens d'authentification

Lorsque vous créez un nouveau compte ou sous-compte, Twilio génère un SID de compte et un token d'authentification pour ce compte. Vous trouverez ces informations d'identification sur la page du tableau de bord de votre compte :

Le tableau de bord du compte Twilio avec le SID du compte et le token d'authentification est indiqué par des flèches.

Ces informations d'identification sont fréquemment utilisées pour communiquer avec Twilio via la CLI, le SDK ou l'API directement. Il n'existe qu'un seul token d'authentification par défaut. Vous devez donc éviter de partager ce token d'authentification pour réduire le risque de le compromettre. Si le token d'authentification est compromis pour quelque raison que ce soit, faites-le pivoter en créant un token d'authentification secondaire afin que le token compromis devienne inutilisable.

Suivez les étapes ci-dessous pour créer un token d'authentification secondaire :

  • Cliquez sur le lien Account (Compte) en haut à droite de la page de navigation
  • Dans le sous-menu, cliquez sur API key & tokens (Clés et tokens API)
  • Faites défiler jusqu'au bas de la page et cliquez sur Request a Secondary Token (Demander un token secondaire)

Une fois que vous disposez d'un token secondaire, vous pouvez le transformer en token principal. Cela supprimera l'ancien token principal et le rendra inutilisable, comme illustré ci-dessous.

Malheureusement, vous ne pouvez faire pivoter ces tokens qu'à l'aide de la console Twilio. Il n'est pas possible de faire pivoter les tokens d'identification d'API à l'aide de l'API. Cependant, vous pouvez faire pivoter les clés API qui sont abordées plus bas dans cet article.

Sous-comptes

Les sous-comptes sont comme les comptes, mais ils appartiennent au compte parent et peuvent être gérés par celui-ci. Au lieu d'utiliser les tokens d'authentification du compte parent, vous pouvez utiliser les tokens d'authentification du sous-compte. Si le token d'authentification du sous-compte est compromis, il ne peut pas être utilisé pour accéder aux ressources du compte parent ou d'autres sous-comptes.

Vous pouvez créer un sous-compte à l'aide de la console Twilio en procédant comme suit :

  • Cliquez sur le lien Account (Compte) en haut à droite de la page de navigation
  • Dans le sous-menu, cliquez sur Subaccounts (Sous-comptes).
  • Cliquez sur l'icône plus (+) si vous avez déjà d'autres sous-comptes, sinon cliquez sur le bouton Create new Subaccount (Créer un nouveau sous-compte)
  • Saisissez un nom convivial pour le sous-compte
  • Cliquez sur le bouton Create (Créer)

Vous pouvez également créer des sous-comptes à l'aide de la CLI, du SDK et de l'API Twilio, comme indiqué dans la documentation Twilio.

Les clés API

Les clés API sont le meilleur moyen de s'authentifier auprès des services de Twilio. Il existe deux types de clés API : Les clés API standard et principales.

Les clés API standard vous donnent accès à toutes les fonctionnalités de l'API de Twilio, à l'exception de la gestion des clés API, de la configuration de compte et des sous-comptes.

Les clés API principales offrent le même accès que les clés standard, mais peuvent également gérer les clés API, la configuration de compte et les sous-comptes. Les clés API principales vous offrent le même niveau d'accès que si vous utilisiez des tokens d'authentification.

Vous pouvez créer des clés API à l'aide de la console Twilio en procédant comme suit :

  • Cliquez sur le lien Account (Compte) en haut à droite de la page de navigation
  • Dans le sous-menu, cliquez sur API key & tokens (Clés et tokens API)
  • Cliquez sur le bouton Create API key (Créer une clé API)
  • Saisissez un nom convivial pour votre clé API
  • Sélectionnez la région la plus proche de vous
  • Indiquez si la clé doit être de type standard ou principale

Vous pouvez également créer des clés API standard à l'aide de la CLI, du SDK et de l'API, comme indiqué dans la documentation Twilio. Vous devez être authentifié avec un token d'authentification ou une clé API principale pour gérer les clés API.

Faire pivoter les clés API

L'un des avantages de l'utilisation de clés API au lieu des informations d'identification d'API est que vous pouvez utiliser l'API pour créer et supprimer des clés API. De cette façon, vous pouvez faire pivoter les clés API par programmation comme mesure de précaution.
Voici comment faire pivoter les clés API à l'aide de la CLI Twilio et de PowerShell :

# Step 0: Install the Twilio CLI and authenticated with account API Credentials or with a Master API Key
# Twilio CLI installation instructions: https://www.twilio.com/docs/twilio-cli/quickstart

# Step 1: Create a new API Key
$NewApiKey = twilio api:core:keys:create -o json | ConvertFrom-Json;
$NewApiKeySid = $NewApiKey.sid;
$NewApiKeySecret = $NewApiKey.secret;

# Step 2: Update your applications to use the new API Key SID and API Key Secret
# --- TO IMPLEMENT BY YOU --- 

# Step 3: Fetch the existing API Key SID (hardcoded for sample)
$OriginalApiKeySid = "[YOUR_API_KEY_SID]";

# Step 4: Delete the old API Key
twilio api:core:keys:remove --sid=$OriginalApiKeySid;

Remarque : assurez-vous d'avoir installé la CLI Twilio avant d'exécuter ce code.

ATTENTION : développez et testez votre application de manière à vous assurer que la rotation de la clé API est gérée correctement.

Vous pouvez créer autant de clés API que nécessaire, contrairement aux informations d'identification d'API, pour lesquelles vous ne pouvez avoir que deux tokens (principal et secondaire) par compte. Au lieu de transmettre des informations d'identification d'API à vos collègues et applications, vous pouvez donc leur donner des clés API. De cette manière, vous pouvez révoquer en toute sécurité les clés API lorsqu'elles ne sont plus utilisées.

Passez des tokens d'authentification aux clés API

Si vous utilisez déjà les tokens d'authentification dans votre code, vous pouvez passer à l'utilisation de clés API en ne modifiant que quelques lignes. Veuillez noter que vous devrez récupérer certains de vos tokens d'authentification sur la console Twilio et les enregistrer localement dans les variables d'environnement pour que le code s'exécute. Pour plus d'informations, suivez les instructions sur le stockage sécurisé des informations d'identification Twilio.  

Voici comment authentifier et envoyer un SMS avec les informations d'identification d'API à l'aide de C# :

// Find your Account Sid and Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
string accountSid = Environment.GetEnvironmentVariable("TwilioAccountSid");
string authToken = Environment.GetEnvironmentVariable("TwilioAccountAuthToken");

TwilioClient.Init(
    username: accountSid,
    password: authToken
);

string twilioPhoneNumber = Environment.GetEnvironmentVariable("TwilioPhoneNumber");
string targetPhoneNumber = "[TARGET_PHONE_NUMBER]";

var message = MessageResource.Create(
    body: "Hello World",
    from: new PhoneNumber(twilioPhoneNumber),
    to: new PhoneNumber(targetPhoneNumber)
);
Console.WriteLine(message.Sid);

Tout d'abord, transmettez votre SID de compte comme paramètre username, et votre token d'authentification comme paramètre password à TwilioClient.Init. Ensuite, envoyez un message texte à l'aide de MessageResource.Create.

Mettez à jour les paramètres transmis à TwilioClient.Init pour vous authentifier avec votre clé API au lieu des informations d'identification d'API :

// Find your Account Sid and Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
string accountSid = Environment.GetEnvironmentVariable("TwilioAccountSid");
string apiKey = Environment.GetEnvironmentVariable("TwilioApiKeySid");
string apiSecret = Environment.GetEnvironmentVariable("TwilioApiKeySecret");

TwilioClient.Init(
    username: apiKey, 
    password: apiSecret, 
    accountSid: accountSid
);

Tout d'abord, saisissez le SID de la clé API dans le paramètre username au lieu du SID de compte. Ensuite, transmettez le code secret de la clé API au paramètre password au lieu du token d'authentification. Enfin, transmettez le SID de compte au paramètre accountSid.

Résumé

Vous pouvez vous authentifier avec l'API de Twilio en utilisant l'ID de compte comme nom d'utilisateur et le token d'authentification principal ou secondaire. Si le token principal est compromis, vous pouvez transformer le token secondaire en token principal, ce qui rendra l'ancien token principal inutilisable.

Vous pouvez protéger vos informations d'identification en segmentant votre compte avec des sous-comptes. Si un token d'authentification ou une clé d'API d'un sous-compte sont compromis, le token peut uniquement être utilisé pour accéder aux ressources du sous-compte.

Les clés API sont désormais le meilleur moyen de s'authentifier avec l'API de Twilio. Vous pouvez créer autant de clés API que nécessaire et les supprimer si elles sont compromises ou ne sont plus utilisées.

Niels Swimberghe est un Full Stack Developer et créateur de contenu technique belge travaillant aux États-Unis. Contactez Niels sur Twitter @RealSwimburger et suivez son blog personnel sur .NET, Azure et le développement Web et plus à l'adresse swimburger.net.