Initialisieren von Clientanwendungen
Bei MSAL.NET 3.x besteht die empfohlene Methode zum Instanziieren einer Anwendung darin, die Anwendungsersteller zu verwenden: PublicClientApplicationBuilder und ConfidentialClientApplicationBuilder. Sie bieten einen leistungsstarken Mechanismus zum Konfigurieren der Anwendung über den Code oder über eine Konfigurationsdatei oder auch durch die Kombination beider Ansätze.
Vor der Initialisierung einer Anwendung müssen Sie diese zunächst registrieren, damit Ihre App in Microsoft Identity Platform integriert werden kann. Nach der Registrierung benötigen Sie möglicherweise die folgenden Informationen (die im Azure-Portal zu finden sind):
- Anwendungs-ID (Client): Dies ist eine Zeichenfolge, die einen eindeutigen Bezeichner darstellt.
- Verzeichnis-ID (Mandant): Bietet Identitäts- und Zugriffsverwaltungsfunktionen (Identity and Access Management, IAM) für Anwendungen und Ressourcen, die von der Organisation verwendet werden. Sie kann angeben, ob Sie eine Branchenanwendung ausschließlich für Ihre Organisation schreiben (auch als Einzelmandantenanwendung bezeichnet).
- Die URL des Identitätsanbieters (als Instanz bezeichnet) und die Anmeldezielgruppe für Ihre Anwendung. Diese beiden Parameter werden zusammen als Autorität bezeichnet.
-
Clientanmeldeinformationen: Diese können in Form eines Anwendungsgeheimnisses (Zeichenfolge mit dem geheimen Clientschlüssel) oder eines Zertifikats (vom Typ
X509Certificate2) angegeben werden, wenn es sich um eine vertrauliche Client-App handelt. - Für Web-Apps und manchmal auch für öffentliche Client-Apps (insbesondere wenn Ihre App einen Broker verwenden muss) müssen Sie den Umleitungs-URI festlegen, bei dem der Identitätsanbieter das Sicherheitstoken zurück an Ihre Anwendung sendet.
Initialisieren öffentlicher und vertraulicher Clientanwendungen aus Code
Der folgende Code instanziiert eine öffentliche Clientanwendung, die Benutzer mit ihrem Geschäfts-, Schul- oder Unikonto oder ihrem persönlichen Microsoft-Konto bei der öffentlichen Microsoft Azure-Cloud anmeldet.
IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId).Build();
Auf dieselbe Weise instanziiert der folgende Code eine vertrauliche Anwendung (eine Web-App unter https://myapp.azurewebsites.net), indem Token von Benutzern in der öffentlichen Microsoft Azure-Cloud über deren Geschäfts-, Schul- oder Unikonto oder deren persönliches Microsoft-Konto verarbeitet werden. Die Anwendung wird anhand des Identitätsanbieters identifiziert, indem ein Clientgeheimnis geteilt wird:
string redirectUri = "https://myapp.azurewebsites.net";
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(clientSecret)
.WithRedirectUri(redirectUri )
.Build();
Erstellermodifizierer
In den Codeschnipseln, in denen Anwendungsersteller verwendet werden, können .With-Methoden als Modifizierer angewendet werden (z. B. .WithAuthority und .WithRedirectUri).
.WithAuthority-Modifizierer: Der.WithAuthority-Modifizierer legt die Standardautorität der Anwendung auf eine Microsoft Entra-Autorität fest, mit der Möglichkeit, Azure Cloud, die Zielgruppe, den Mandanten (Mandanten-ID oder Domänennamen) oder den Autoritäts-URI direkt auszuwählen.IPublicClientApplication app; app = PublicClientApplicationBuilder.Create(clientId) .WithAuthority(AzureCloudInstance.AzurePublic, tenantId) .Build();.WithRedirectUri-Modifizierer: Der.WithRedirectUri-Modifizierer überschreibt den Standardumleitungs-URI.IPublicClientApplication app; app = PublicClientApplicationBuilder.Create(client_id) .WithAuthority(AzureCloudInstance.AzurePublic, tenant_id) .WithRedirectUri("http://localhost") .Build();
Modifizierer für öffentliche und vertrauliche Clientanwendungen
In der folgenden Tabelle sind einige der Modifizierer aufgeführt, die Sie auf einem öffentlichen oder vertraulichen Client festlegen können.
| Modifizierer | Beschreibung |
|---|---|
.WithAuthority() |
Legt die Standardautorität der Anwendung auf eine Microsoft Entra-Autorität fest, mit der Möglichkeit, Azure Cloud, die Zielgruppe, den Mandanten (Mandanten-ID oder Domänennamen) oder den Autoritäts-URI direkt auszuwählen. |
.WithTenantId(string tenantId) |
Setzt die Mandanten-ID oder die Mandantenbeschreibung außer Kraft. |
.WithClientId(string) |
Setzt die Client-ID außer Kraft. |
.WithRedirectUri(string redirectUri) |
Setzt den standardmäßigen Umleitungs-URI außer Kraft. Dies ist nützlich für Szenarien, in denen ein Broker erforderlich ist. |
.WithComponent(string) |
Legt den Namen der Bibliothek über MSAL.NET fest (aus Telemetriegründen). |
.WithDebugLoggingCallback() |
Wenn die Anwendung aufgerufen wird, ruft sie wiederum Debug.Write auf, um die Debugablaufverfolgungen zu aktivieren. |
.WithLogging() |
Bei Aufruf ruft die Anwendung einen Rückruf mit Debugablaufverfolgungen auf. |
.WithTelemetry(TelemetryCallback telemetryCallback) |
Legt den Delegaten fest, der zum Senden von Telemetriedaten verwendet wird. |
Für vertrauliche Clientanwendungen spezifische Modifizierer
Die für einen vertraulichen Clientanwendungs-Generator spezifischen Modifizierer finden Sie in der ConfidentialClientApplicationBuilder Klasse. Die verschiedenen Methoden finden Sie in der Dokumentation zum Azure SDK für .NET.
Modifizierer wie .WithCertificate(X509Certificate2 certificate) und .WithClientSecret(string clientSecret) schließen sich gegenseitig aus. Wenn Sie beide angeben, löst die MSAL eine entsprechende Ausnahme aus.