Verwaltete Identität mit MSAL.NET

Note

Dieses Feature ist ab MSAL.NET Version 4.54.0 verfügbar.

Die Verwaltung von Geheimnissen, Anmeldeinformationen, Zertifikaten und Schlüsseln für eine sichere Kommunikation zwischen verschiedenen Diensten stellt für Entwickler eine häufige Herausforderung dar. Verwaltete Identitäten in Azure vermeiden, dass Entwickler diese Anmeldeinformationen manuell verarbeiten müssen. MSAL.NET unterstützt das Abrufen von Token über den verwalteten Identitätsdienst, wenn sie mit Anwendungen verwendet wird, die in Azure Infrastruktur ausgeführt werden, z. B.:

Eine vollständige Liste finden Sie unter Azure Dienste, die verwaltete Identitäten für den Zugriff auf andere Dienste verwenden können.

Welches SDK soll verwendet werden – Azure SDK oder MSAL?

MSAL-Bibliotheken stellen APIs auf niedrigerer Ebene bereit, die den OAuth2- und OIDC-Protokollen näher sind.

Sowohl MSAL.NET als auch Azure SDK ermöglichen das Abrufen von Token über verwaltete Identität. Intern verwendet Azure SDK MSAL.NET und stellt über seine DefaultAzureCredential und ManagedIdentityCredential Abstraktionen eine API auf höherer Ebene bereit.

Wenn Ihre Anwendung bereits eine der SDKs verwendet, verwenden Sie weiterhin dasselbe SDK. Verwenden Sie Azure SDK, wenn Sie eine neue Anwendung schreiben und planen, andere Azure Ressourcen aufzurufen, da dieses SDK eine bessere Entwicklerumgebung bietet, indem die App auf privaten Entwicklercomputern ausgeführt werden kann, auf denen keine verwaltete Identität vorhanden ist. Erwägen Sie die Verwendung von MSAL, wenn Sie andere downstream-Web-APIs wie Microsoft Graph oder Ihre eigene Web-API aufrufen müssen.

Note

Microsoft. Identity.Web ist eine api auf höherer Ebene, die die Integration mit ASP.NET Core und ASP.NET Classic bietet, während MSAL unter der Haube verwendet wird. Die Bibliothek bietet auch eine Möglichkeit zum Laden von Anmeldeinformationen (Zertifikate, signierten Assertionen), die von MSAL.NET als Clientanmeldeinformationen verwendet werden. Für Zertifikate wird DefaultAzureCredentials verwendet, um Zertifikate aus KeyVault abzurufen. Er bietet außerdem einen Workloadidentitätsverbund mit verwalteten Identitätsanmeldeinformationen. Ausführliche Informationen finden Sie unter "CredentialDescription".

Schnellstart

Um schnell loszulegen und Azure verwaltete Identität in Aktion zu sehen, können Sie eines der Beispiele verwenden, die das Team zu diesem Zweck erstellt hat:

So verwenden Sie verwaltete Identitäten

Es gibt zwei Arten von verwalteten Identitäten, die Entwicklern zur Verfügung stehen: vom System zugewiesen und vom Benutzer zugewiesen. Weitere Informationen zu den Unterschieden im Artikel " Verwaltete Identitätstypen ". MSAL.NET unterstützt den Tokenerwerb mit beiden. MSAL.NET Protokollierung ermöglicht das Nachverfolgen von Anforderungen und verwandten Metadaten.

Vor der Verwendung verwalteter Identitäten aus MSAL.NET müssen Entwickler sie für die Ressourcen aktivieren, die sie über Azure CLI oder die Azure-Portal verwenden möchten.

Beispiele

Für vom Benutzer zugewiesene und vom System zugewiesene Identitäten können Entwickler die ManagedIdentityApplicationBuilder Klasse verwenden.

Vom System zugewiesene verwaltete Identitäten

Bei vom System zugewiesenen verwalteten Identitäten muss der Entwickler beim Erstellen einer Instanz von IManagedIdentityApplication keine zusätzlichen Informationen übergeben, da diese automatisch die relevanten Metadaten zur zugewiesenen Identität ableitet.

AcquireTokenForManagedIdentity(String) wird mit der Ressource aufgerufen, für die ein Token abgerufen werden soll, wie https://management.azure.com.

IManagedIdentityApplication mi = ManagedIdentityApplicationBuilder.Create(ManagedIdentityId.SystemAssigned)
    .Build();

AuthenticationResult result = await mi.AcquireTokenForManagedIdentity(resource)
    .ExecuteAsync()
    .ConfigureAwait(false);

Vom Benutzer zugewiesene verwaltete Identitäten

Bei vom Benutzer zugewiesenen verwalteten Identitäten muss der Entwickler beim Erstellen IManagedIdentityApplicationentweder die Client-ID, den vollständigen Ressourcenbezeichner oder die Objekt-ID der verwalteten Identität übergeben.

Wie bei systemseitig zugewiesenen verwalteten Identitäten wird AcquireTokenForManagedIdentity(String) mit der Ressource aufgerufen, für die ein Token abgerufen werden soll, z. B. https://management.azure.com.

IManagedIdentityApplication mi = ManagedIdentityApplicationBuilder.Create(ManagedIdentityId.WithUserAssignedClientId(clientIdOfUserAssignedManagedIdentity))
    .Build();

AuthenticationResult result = await mi.AcquireTokenForManagedIdentity(resource)
    .ExecuteAsync()
    .ConfigureAwait(false);

Caching

Standardmäßig unterstützt MSAL.NET die Zwischenspeicherung im Arbeitsspeicher. MSAL unterstützt die Cacheerweiterung für verwaltete Identität aufgrund von Sicherheitsbedenken bei der Verwendung des verteilten Caches nicht. Da ein für verwaltete Identität erworbenes Token zu einer Azure Ressource gehört, kann die Verwendung eines verteilten Caches sie für die anderen Azure Ressourcen verfügbar machen, die den Cache gemeinsam nutzen.

Troubleshooting

Bei fehlgeschlagenen Anforderungen enthält die Fehlerantwort eine Korrelations-ID, die für die weitere Diagnose und Protokollanalyse verwendet werden kann. Beachten Sie, dass die korrelations-IDs, die in MSAL.NET generiert oder an MSAL übergeben werden, von der in Serverfehlerantworten zurückgegebenen abweichen, da MSAL.NET die Korrelations-ID nicht an verwaltete Identitätstokenakquisendpunkte übergeben können.

Mögliche Fehler

MsalServiceException Fehlercode: Fehlermeldung: managed_identity_failed_response Unerwarteter Fehler beim Abrufen des AAD-Tokens

Diese Ausnahme kann bedeuten, dass die Ressource, für die Sie ein Token abrufen möchten, entweder nicht unterstützt wird oder mit dem falschen Ressourcen-ID-Format bereitgestellt wird. Beispiele für korrekte Ressourcen-ID-Formate sind : https://management.azure.com/.default, https://management.azure.comund https://graph.microsoft.com.

MsalServiceException Fehlercode: managed_identity_unreachable_network.

Diese Ausnahme kann bedeuten, dass Sie wahrscheinlich eine Ressource verwenden, für die MSAL.NET das Abrufen eines Tokens für verwaltete Identitäten nicht unterstützt, oder dass Sie den Beispielcode auf einem Entwicklungscomputer ausführen, auf dem der Endpunkt zum Abrufen des Tokens für verwaltete Identitäten nicht erreichbar ist.