Mejor autenticación de Twilio con claves de API

March 01, 2021
Redactado por
Revisado por
Diane Phan
Twilion

Twilio genera un identificador de cadena de cuenta (SID) y un token de autenticación cuando creas una cuenta de Twilio. Con estas credenciales, puedes realizar todas las funciones disponibles en la API de Twilio.

Cada vez que entregues el SID y el token de autenticación de la cuenta a un dispositivo o a un colega, aumentas el riesgo de que esas credenciales se vean comprometidas. Afortunadamente, Twilio proporciona capacidades para minimizar este riesgo. Este artículo cubre:

  • tokens de autenticación
  • subcuentas
  • Claves de API

tokens de autenticación

Cuando creas una nueva cuenta o subcuenta, Twilio genera un SID y un token de autenticación para esa cuenta. Puedes encontrar estas credenciales en la página del panel de control de tu cuenta:

El panel de control de la cuenta de Twilio con el SID y el token de autenticación de la cuenta se indica con flechas.

Estas credenciales se utilizan con frecuencia para comunicarse con Twilio a través de CLI, SDK o el uso directo de la API. Solo hay un token de autenticación de forma predeterminada, por lo que debes evitar compartir este token de autenticación para minimizar el riesgo de que se vea comprometido. Si esto sucede, debes renovarlo mediante la creación de un token de autenticación secundario para que el token filtrado deje de ser útil.

Sigue los pasos a continuación para crear un token de autenticación secundario:

  • Haz clic en el enlace Account (Cuenta) en la navegación superior derecha.
  • En el submenú, haz clic en API keys & tokens (Claves y tokens API).
  • Desplázate hasta la parte inferior de la página y haz clic en Request a Secondary Token (Solicitar un token secundario).

Una vez que tengas un token secundario, puedes convertirlo en el token principal. Esto eliminará el token primario antiguo y lo dejará fuera de uso, como se muestra a continuación.

Lamentablemente, solo puedes renovar estos tokens mediante la consola de Twilio. No es posible renovar tokens de credenciales de API usando la API. Sin embargo, puedes renovar las claves de API, tema que se abordará más adelante en esta publicación.

subcuentas

Las subcuentas son similares a las cuentas, pero son propiedad de la cuenta principal y pueden ser gestionadas por esta. En lugar de utilizar los tokens de autenticación de la cuenta principal, puedes utilizar los tokens de autenticación de la subcuenta. Si el token de autenticación de la subcuenta se ve comprometido, el token no se puede utilizar para acceder a los recursos de la cuenta principal u otras subcuentas.

Puedes crear una subcuenta mediante la consola de Twilio siguiendo estos pasos:

  • Haz clic en el enlace Account (Cuenta) en la navegación superior derecha.
  • En el submenú, haz clic en Subaccounts (Subcuentas).
  • Haz clic en el ícono más (+) si ya tienes otras subcuentas; de lo contrario, haz clic en el botón Create new Subaccount (Crear nueva subcuenta).
  • Ingresa un nombre descriptivo para la subcuenta.
  • Haz clic en el botón Create (Crear).

También puedes crear subcuentas mediante CLI, SDK y API de Twilio, tal como se documenta en la documentación de Twilio.

Claves de API

Las claves de API son la forma preferida de autenticarse a los servicios de Twilio. Hay dos tipos de claves de API: Claves de API estándar y principales.

Las claves de API estándar te dan acceso a todas las funciones de la API de Twilio, excepto la administración de claves de API, la configuración de cuenta y las subcuentas.

Las claves de API principales tienen el mismo acceso que las claves estándar, pero también pueden administrar las claves de API, la configuración de cuenta y las subcuentas. Las claves de API principales proporcionan el mismo nivel de acceso que si estuvieras utilizando tokens de autenticación.

Puedes crear claves de API mediante la consola de Twilio siguiendo estos pasos:

  • Haz clic en el enlace Account (Cuenta) en la navegación superior derecha.
  • En el submenú, haz clic en API keys & tokens (Claves y tokens API).
  • Haz clic en el botón Create API key (Crear clave de API).
  • Ingresa un nombre descriptivo para tu clave de API.
  • Selecciona la región más cercana a ti.
  • Selecciona si el tipo de clave debe ser estándar o principal.

También puedes crear claves de API estándar mediante CLI, SDK y API, tal como se explica en la documentación de Twilio. Debes autenticarte con un token de autenticación o una clave de API principal para administrar las claves de API.

Renovar las claves de API

Una de las ventajas de utilizar claves de API en lugar de credenciales de API es que puedes utilizar la API para crear y eliminar claves de API. De esta manera, puedes renovar de forma programática las claves de API como medida preventiva.
A continuación, se explica cómo renovar las claves de API mediante la CLI de Twilio y 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;

Nota: Asegúrate de haber instalado la CLI de Twilio antes de ejecutar este código.

ADVERTENCIA: Asegúrate de desarrollar y probar tu aplicación para asegurarte de que la renovación de claves de API se maneje correctamente.

Puedes crear tantas claves de API como necesites, cosa que no sucede con las credenciales de API, ya que solo puedes tener dos tokens (principal y secundario) por cuenta. Por lo tanto, en lugar de pasar credenciales de API a tus compañeros de equipo y aplicaciones, debe darles claves de API. De esta manera, puedes revocar de forma segura las claves de API cuando ya no se utilizan.

Cambia de tokens de autenticación a claves de API

Si ya estás utilizando los tokens de autenticación en tu código, puedes cambiar al uso de claves de API con solo unas pocas líneas de cambios. Ten en cuenta que querrás obtener parte de tu token de autenticación desde la consola de Twilio y guardarlo localmente en variables de entorno para que el código se ejecute. Para obtener más información sobre cómo hacer esto, sigue las instrucciones sobre cómo almacenar las credenciales de Twilio de forma segura.  

Así es como se autenticaría y enviaría un SMS con las credenciales de API utilizando 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);

En primer lugar, pasa el SID de tu cuenta como parámetro username y el token de autenticación como parámetro password en TwilioClient.Init. A continuación, envía un mensaje de texto con MessageResource.Create.

Actualiza los parámetros enviados a TwilioClient.Init para autenticarte con tu clave de API en lugar de utilizar la credencial de 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
);

En primer lugar, pasa el SID de la clave de API al parámetro username en lugar del SID de la cuenta. Luego, pasa el secreto de la clave de API al parámetro password en lugar del token de autenticación. Por último, pasa el SID de la cuenta al parámetro accountSid.

Resumen

Puedes autenticarte con la API de Twilio utilizando el ID de cuenta como nombre de usuario y el token de autenticación principal o secundario. Si el token primario se ve comprometido, puedes convertir el token secundario a token primario, lo que hará que el token primario antiguo quede inutilizable.

Puedes proteger tus credenciales mediante la segmentación de tu cuenta en subcuentas. Si un token de autenticación o una clave de API de una subcuenta se ve comprometido, el token solo puede usarse para acceder a los recursos en la subcuenta.

Las claves de API ahora son la forma preferida de autenticarse con la API de Twilio. Puedes crear tantas claves de API como necesites y eliminarlas si están comprometidas o ya no se utilizan.

Niels Swimberghe es un creador de contenido técnico y desarrollador Full Stack belga que trabaja en Estados Unidos. Comunícate con Niels en Twitter @RealSwimburger y sigue su blog sobre .NET, Azure, desarrollo web y más en swimburger.net.