Anmeldeinformationsketten in der Azure Identity-Clientbibliothek für JavaScript
Die Azure Identity-Clientbibliothek stellt Anmeldeinformationen bereit. Hierbei handelt es sich um öffentliche Klassen, die die TokenCredential-Schnittstelle der Azure Core-Bibliothek implementieren. Anmeldeinformationen stellen einen eindeutigen Authentifizierungsfluss zum Abrufen eines Zugriffstokens aus der Microsoft Entra-ID dar. Diese Anmeldedaten können einzeln ausgewählt oder miteinander verkettet werden, um eine geordnete Abfolge von Authentifizierungsmechanismen zu bilden, die versucht werden sollen.
- Einzelne Anmeldeinformationen sorgen für Geschwindigkeit und Gewissheit. Wenn sie fehlschlagen, wissen Sie, dass die Anmeldeinformationen nicht authentifiziert wurden.
- Ketten bieten Fallbacks. Wenn die Authentifizierung der Anmeldeinformationen fehlschlägt, wird versucht, die nächsten Anmeldeinformationen in der Kette zu authentifizieren.
Entwerfen Sie Ihre Authentifizierungsabläufe
Wenn Sie Azure SDK-Clientbibliotheken verwenden, besteht der erste Schritt darin, sich bei Azure zu authentifizieren. Es kommen viele Möglichkeiten zur Authentifizierung in Betracht, wie zum Beispiel Tools und IDEs, die im Entwicklungsteam verwendet werden, Automatisierungsworkflows wie Tests und CI/CD sowie Hostingplattformen wie Azure App Service.
Folgende allgemeine Abläufe stehen für Ihren Authentifizierungsflow zur Auswahl:
Verwenden Sie
DefaultAzureCredential
für Teams, deren Entwickler verschiedene IDEs und CLIs verwenden, um sich bei Azure zu authentifizieren. Dies ermöglicht die größte Flexibilität. Diese Flexibilität geht zulasten der Leistung bei der Validierung der Anmeldeinformationen in der Kette, bis Anmeldeinformationen erfolgreich sind.- Der Fallback von Anmeldeinformation zu Anmeldeinformation wird basierend auf der erkannten Umgebung für Sie ausgewählt.
- Um zu ermitteln, welche Anmeldeinformationen ausgewählt wurden, aktivieren Sie das Debugging.
Verwenden Sie
ChainedTokenCredential
für Teams mit einer strikten, begrenzten Auswahl von Tools. Beispielsweise melden sie sich alle an und verwenden dieselbe IDE oder CLI. Das Team kann dann die exakten Anmeldeinformationen und ihre Reihenfolge auswählen. Dies bietet immer noch Flexibilität, jedoch mit geringeren Leistungseinbußen.- Sie wählen den Fallbackpfad von Anmeldeinformation zu Anmeldeinformation unabhängig von der verwendeten Umgebung.
- Um zu ermitteln, welche Anmeldeinformationen ausgewählt wurden, aktivieren Sie das Debugging.
Bei Teams mit klaren Anmeldeinformationen in allen Umgebungen können Sie mit einer Ablaufsteuerungsanweisung wie if/else feststellen, welche Anmeldeinformationen in den einzelnen Umgebungen ausgewählt wurden.
- Es gibt keinen Fallback zu einem anderen Anmeldeinformationstyp.
- Sie müssen nicht debuggen, um zu bestimmen, welche Anmeldeinformationen ausgewählt wurden, da sie angegeben wurde.
Funktionsweise von verketteten Anmeldeinformationen
Zur Laufzeit versucht eine Anmeldeinformationskette, sich mit den ersten Anmeldeinformationen der Sequenz zu authentifizieren. Wenn diese Anmeldeinformationen kein Zugriffstoken abrufen, werden die nächsten Anmeldeinformationen in der Sequenz ausprobiert usw., bis erfolgreich ein Zugriffstoken abgerufen wurde. Das folgende Sequenzdiagramm veranschaulicht dieses Verhalten:
Verwendung von DefaultAzureCredential für Flexibilität
DefaultAzureCredential ist eine vorkonfigurierte Kette von Anmeldeinformationen. Es wurde entwickelt, um viele Umgebungen zusammen mit den am häufigsten verwendeten Authentifizierungsflüssen und Entwicklertools zu unterstützen. In grafischer Form sieht die zugrunde liegende Kette wie folgt aus:
Die Reihenfolge, in der DefaultAzureCredential
, versucht, Anmeldeinformationen zu erhalten, folgt.
Auftrag | Credential | Beschreibung |
---|---|---|
1 | Umgebung | Liest eine Sammlung von Umgebungsvariablen, um zu bestimmen, ob ein Anwendungsdienstprinzipal (Anwendungsbenutzer) für die App konfiguriert ist. Wenn ja, verwendet DefaultAzureCredential diese Werte, um die App bei Azure zu authentifizieren. Diese Methode wird am häufigsten in Serverumgebungen verwendet, kann aber auch bei der lokalen Entwicklung verwendet werden. |
2 | Workloadidentität | Wenn die App auf einem Azure-Host mit aktivierter Workload-Identität bereitgestellt wird, authentifizieren Sie dieses Konto. |
3 | Verwaltete Identität | Wenn die App auf einem Azure-Host mit aktivierter verwalteter Identität bereitgestellt wird, authentifizieren Sie die App mit dieser verwalteten Identität bei Azure. |
4 | Azure-Befehlszeilenschnittstelle | Wenn sich der Entwickler bei Azure mithilfe des befehls az login der Azure CLI authentifiziert hat, authentifizieren Sie die App mit demselben Konto bei Azure. |
5 | Azure PowerShell | Wenn sich der Entwickler mit dem Connect-AzAccount -Cmdlet von Azure PowerShell bei Azure authentifiziert hat, authentifizieren Sie die App mit demselben Konto bei Azure. |
6 | Azure Developer CLI | Wenn sich der Entwickler mit dem azd auth login -Befehl der Azure Developer CLI bei Azure authentifiziert hat, authentifizieren Sie sich mit diesem Konto. |
In der einfachsten Form können Sie die parameterlose Version von DefaultAzureCredential
wie folgt verwenden:
import { DefaultAzureCredential } from "@azure/identity";
import { BlobServiceClient } from "@azure/storage-blob";
// Acquire a credential object
const credential = new DefaultAzureCredential();
const blobServiceClient = new BlobServiceClient(
"https://<my_account_name>.blob.core.windows.net",
credential
);
Anmeldeinformationen gelten global für die Umgebung
DefaultAzureCredential
überprüft, ob bestimmte Umgebungsvariablenvorhanden sind. Es ist möglich, dass jemand diese Umgebungsvariablen auf der Systemebene auf dem Hostcomputer hinzufügen oder ändern kann. Diese Änderungen gelten global und ändern daher das Verhalten von DefaultAzureCredential
zur Laufzeit in jeder App, die auf diesem Computer ausgeführt wird.
Verwendung von ChainedTokenCredential für Granularität
ChainedTokenCredential ist eine leere Kette, der Sie den Anforderungen Ihrer App entsprechende Anmeldeinformationen hinzufügen. Im folgenden Beispiel wird beispielsweise eine ManagedIdentityCredential
Instanz und dann eine AzureCliCredential
Instanz hinzugefügt.
import {
ChainedTokenCredential,
ManagedIdentityCredential,
AzureCliCredential
} from "@azure/identity";
const credential = new ChainedTokenCredential(
new ManagedIdentityCredential({ clientId: "<YOUR_CLIENT_ID>" }),
new AzureCliCredential()
);
Im vorherigen Codebeispiel wird eine angepasste Anmeldedatenkette erstellt, die aus zwei Anmeldedaten besteht. Die vom Benutzer zugewiesene Variante der verwalteten Identität von ManagedIdentityCredential
wird zuerst versucht, gefolgt von AzureCliCredential
, falls erforderlich. In grafischer Form sieht die Kette wie folgt aus:
Tipp
Optimieren Sie die Sortierung von Anmeldeinformationen für Ihre Produktionsumgebung, um die Leistung zu verbessern. Anmeldeinformationen, die für die Verwendung in der lokalen Entwicklungsumgebung vorgesehen sind, sollten zuletzt hinzugefügt werden.
Debuggen von verketteten Anmeldeinformationen
Aktivieren Sie die Azure SDK-Protokollierung, um eine Anmeldeinformationskette zu debuggen.