Bessere Twilio-Authentifizierung mit API-Schlüssel

March 01, 2021
Autor:in:
Prüfer:in:
Diane Phan
Twilion

Twilio generiert einen Kontostring-Identifikator (SID) und ein Authentifizierungstoken, wenn Sie ein Twilio-Konto erstellen. Mit diesen Anmeldeinformationen können Sie alle in der Twilio-API verfügbaren Funktionen ausführen.

Jedes Mal, wenn Sie die Konto-SID und das Authentifizierungstoken an ein Gerät oder eine Person weitergeben, steigt das Risiko, dass diese Anmeldeinformationen kompromittiert werden. Gut, dass Twilio Funktionen bietet, um dieses Risiko zu minimieren. In diesem Artikel geht es um:

  • Authentifizierungstoken
  • Unterkonten
  • API-Schlüssel

Authentifizierungstoken

Wenn Sie ein neues (Unter-)Konto erstellen, generiert Twilio eine Konto-SID und ein Authentifizierungstoken für dieses Konto. Diese Anmeldeinformationen finden Sie auf der Dashboard-Seite Ihres Kontos:

Dashboard Ihres Twilio-Kontos mit durch rote Pfeile hervorgehobener Konto-SID und Authentifizierungstoken.

Diese Anmeldeinformationen werden häufig für die Kommunikation mit Twilio über CLI, SDKs oder die API direkt verwendet. Standardmäßig gibt es nur ein Authentifizierungstoken. Daher sollten Sie es nicht weitergeben, um das Risiko einer Kompromittierung zu minimieren. Wenn das Authentifizierungstoken aus irgendeinem Grund kompromittiert wird, erstellen Sie ein sekundäres Authentifizierungstoken, damit das alte unbrauchbar wird.

Um ein sekundäres Authentifizierungstoken zu erstellen, gehen Sie folgendermaßen vor:

  • Klicken Sie auf Account (Konto) in der oberen rechten Navigation.
  • Klicken Sie im Untermenü auf API keys & tokens (API-Schlüssel und Token).
  • Scrollen Sie bis zum Ende der Seite und klicken Sie auf Request a Secondary Token (Sekundäres Token anfordern).

Sobald Sie ein sekundäres Token haben, können Sie dieses zum primären Token machen. Dadurch wird das alte primäre Token entfernt und unbrauchbar gemacht, wie unten dargestellt.

Leider können Sie diese Token nur über die Twilio-Konsole erneuern. Token mit API-Anmeldeinformationen können mit der API nicht erneuert werden. Allerdings können Sie API-Schlüssel erneuern. Darauf gehen wir später in diesem Beitrag ein.

Unterkonten

Unterkonten sind normale Konten, gehören aber zum übergeordneten Konto und können von diesem verwaltet werden. Anstelle der Authentifizierungstoken des übergeordneten Kontos können Sie die Authentifizierungstoken des Unterkontos verwenden. Wenn das Authentifizierungstoken des Unterkontos kompromittiert wird, können Sie damit nicht mehr auf Ressourcen des übergeordneten Kontos oder andere Unterkonten zugreifen.

Um ein Unterkonto mit der Twilio-Konsole zu erstellen, gehen Sie folgendermaßen vor:

  • Klicken Sie auf Account (Konto) in der oberen rechten Navigation.
  • Klicken Sie im Untermenü auf Subaccounts (Unterkonten).
  • Klicken Sie auf das Plus-Symbol (+), wenn Sie bereits andere Unterkonten haben. Andernfalls klicken Sie auf die Schaltfläche Create new Subaccount (Neues Unterkonto erstellen).
  • Geben Sie einen Anzeigenamen für das Unterkonto ein.
  • Klicken Sie auf die Schaltfläche Create (Erstellen).

Sie können Unterkonten auch mit der CLI, dem SDK und der API von Twilio erstellen, siehe Twilio-Dokumentation.

API-Schlüssel

API-Schlüssel sind die bevorzugte Methode zur Authentifizierung bei Diensten von Twilio. Es gibt zwei Arten von API-Schlüsseln: API-Standard- und Hauptschlüssel.

Mit API-Standardschlüsseln haben Sie Zugriff auf alle Funktionen der Twilio-API, außer der Verwaltung von API-Schlüsseln, Kontokonfigurationen und Unterkonten.

API-Hauptschlüssel haben denselben Zugriff wie Standardschlüssel, können aber auch API-Schlüssel, Kontokonfigurationen und Unterkonten verwalten. Mit API-Hauptschlüsseln haben Sie die gleichen Zugriffsrechte wie mit Authentifizierungstoken.

Gehen Sie folgendermaßen vor, um API-Schlüssel mit der Twilio-Konsole zu erstellen:

  • Klicken Sie auf Account (Konto) in der oberen rechten Navigation.
  • Klicken Sie im Untermenü auf API keys & tokens (API-Schlüssel und Token).
  • Klicken Sie auf die Schaltfläche Create API key (API-Schlüssel erstellen).
  • Geben Sie einen Anzeigenamen für Ihren API-Schlüssel ein.
  • Wählen Sie die Ihnen am nächsten gelegene Region.
  • Wählen Sie aus, ob der Schlüsseltyp Standard oder Haupt sein soll.

Sie können API-Standardschlüssel auch mit der CLI, dem SDK und der API von Twilio erstellen, siehe Twilio-Dokumentation. Um API-Schlüssel zu verwalten, müssen Sie sich mit einem Authentifizierungstoken oder einem API-Hauptschlüssel authentifizieren.

API-Schlüssel erneuern

Einer der Vorteile von API-Schlüsseln gegenüber API-Anmeldeinformationen ist, dass Sie die API zum Erstellen und Löschen von API-Schlüsseln verwenden können. Auf diese Weise können Sie API-Schlüssel vorbeugend programmgesteuert erneuern.
Im Folgenden wird beschrieben, wie Sie die API-Schlüssel mithilfe der Twilio-CLI und PowerShell erneuern:

# 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;

Hinweis: Stellen Sie sicher, dass Sie die Twilio-CLI installiert haben, bevor Sie diesen Code ausführen.

WARNUNG: Stellen Sie sicher, dass Sie Ihre Anwendung entwickeln und testen, um sicherzustellen, dass der API-Schlüssel ordnungsgemäß erneuert wird.

Im Gegensatz zu API-Anmeldeinformationen, bei denen nur zwei (primäre und sekundäre) Token pro Konto zulässig sind, können Sie beliebig viele API-Schlüssel erstellen. Anstelle von API-Anmeldeinformationen sollten Sie daher API-Schlüssel an Ihr Team und Anwendungen weitergeben. Auf diese Weise können Sie die API-Schlüssel sicher widerrufen, wenn sie nicht mehr verwendet werden.

Von Authentifizierungstoken zu API-Schlüsseln wechseln

Wenn Sie in Ihrem Code bereits Authentifizierungstoken verwenden, können Sie mit nur minimalen Zeilenänderungen zu API-Schlüsseln wechseln. Beachten Sie, dass Sie einige Ihrer Authentifizierungstoken von der Twilio-Konsole abrufen und sie lokal in Umgebungsvariablen speichern müssen, damit der Code ausgeführt werden kann. Weitere Informationen dazu finden Sie in den Anweisungen zum sicheren Speichern von Twilio-Anmeldeinformationen.  

Hier sehen Sie, wie Sie sich authentifizieren und eine SMS mit den API-Anmeldeinformationen in C# senden:

// 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);

Geben Sie zunächst Ihre Konto-SID als username-Parameter und das Authentifizierungstoken als password-Paramater in TwilioClient.Init ein. Senden Sie dann eine Textnachricht mit MessageResource.Create.

Aktualisieren Sie die an TwilioClient.Init übergebenen Parameter, um sich mit Ihrem API-Schlüssel und nicht mit den API-Anmeldeinformationen zu authentifizieren:

// 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
);

Geben Sie zunächst anstelle der Konto-SID die SID des API-Schlüssels als username-Parameter ein. Geben Sie dann anstelle des Authentifizierungstokens den geheimen API-Schlüssel als password-Parameter ein. Geben Sie schließlich die Konto-SID als accountSid-Parameter ein.

Zusammenfassung

Sie können sich mit der API von Twilio authentifizieren, indem Sie die Konto-ID als Nutzernamen und das primäre oder sekundäre Authentifizierungstoken verwenden. Wenn das primäre Token kompromittiert wird, können Sie das sekundäre Token zum primären Token machen. Dadurch verliert das alte primäre Token seine Gültigkeit.

Sie können Ihre Anmeldeinformationen schützen, indem Sie Ihr Konto in Unterkonten aufteilen. Wenn ein Autorisierungstoken oder ein API-Schlüssel für ein Unterkonto kompromittiert wird, kann mit dem Token nur auf Ressourcen des Unterkontos zugegriffen werden.

API-Schlüssel sind mittlerweile die bevorzugte Methode zur Authentifizierung bei der API von Twilio. Sie können beliebig viele API-Schlüssel erstellen und entfernen, wenn sie kompromittiert sind oder nicht mehr verwendet werden.

Niels Swimberghe ist ein belgischer Full Stack Developer und technischer Content Creator, der in den USA arbeitet. Folgen Sie Niels auf X (ehemals Twitter) unter @RealSwimburger und lesen Sie Niels‘ Blog über .NET, Azure, Webentwicklung und mehr auf swimburger.net.