Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden die Initialisierung öffentlicher Clients und vertraulicher Clientanwendungen mithilfe der Microsoft Authentication Library (MSAL) für .NET (MSAL.NET) beschrieben. Weitere Informationen zu den Clientanwendungstypen finden Sie unter Öffentliche Client- und vertrauliche Clientanwendungen.
Mit MSAL.NET 3.x wird empfohlen, eine Anwendung mithilfe der Anwendungs-Generatoren zu instanziieren: PublicClientApplicationBuilder und ConfidentialClientApplicationBuilder. Sie bieten einen leistungsfähigen Mechanismus zum Konfigurieren der Anwendung aus dem Code, einer Konfigurationsdatei oder sogar durch Mischen beider Ansätze.
Voraussetzungen
Bevor Sie eine Anwendung initialisieren, müssen Sie sie zuerst registrieren, damit Ihre App in die Microsoft Identity Platform integriert werden kann. Weitere Informationen finden Sie in der Schnellstartanleitung: Registrieren einer Anwendung mit dem Microsoft Identity Platform. Nach der Registrierung benötigen Sie die folgenden Informationen, die auf der App-Registrierungsseite im Microsoft Entra Admin Center zu finden sind.
- Anwendungs-ID (Client-ID) – Dies ist eine Zeichenfolge, die eine GUID 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 (die Instanz genannt) und die Anmeldegruppe für Ihre Anwendung. Diese beiden Parameter werden gemeinsam als Autorität bezeichnet.
-
Clientanmeldeinformationen – die Form eines geheimen Anwendungsschlüssels (clientschlüssele Zeichenfolge) oder eines Zertifikats (vom Typ
X509Certificate2) annehmen können, 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, an den der Identitätsanbieter Ihre Anwendung mit den Sicherheitstoken zurückleitet.
Initialisieren von Anwendungen
Es gibt viele verschiedene Möglichkeiten zum Instanziieren von Clientanwendungen.
Initialisieren einer öffentlichen Clientanwendung aus Code
Der folgende Code instanziiert eine öffentliche Clientanwendung, anmeldet Benutzer in der Microsoft Azure öffentlichen Cloud mit ihren Geschäfts-, Schul- oder persönlichen Microsoft-Konten.
IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientId)
.Build();
Initialisieren einer vertraulichen Clientanwendung aus Code
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 mit dem Identitätsanbieter identifiziert, indem ein geheimer Clientschlüssel freigegeben wird:
string redirectUri = "https://myapp.azurewebsites.net";
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(clientSecret)
.WithRedirectUri(redirectUri )
.Build();
In der Produktion werden zertifikate jedoch empfohlen, da sie sicherer sind als geheime Clientschlüssel. Sie können erstellt und in die Microsoft Entra Admin Center hochgeladen werden. Der Code würde dann wie folgt aussehen:
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(clientId)
.WithCertificate(certificate)
.WithRedirectUri(redirectUri )
.Build();
Initialisieren einer öffentlichen Clientanwendung über Konfigurationsoptionen
Der folgende Code instanziiert eine öffentliche Clientanwendung aus einem Konfigurationsobjekt, das programmgesteuert ausgefüllt oder aus einer Konfigurationsdatei gelesen werden kann:
PublicClientApplicationOptions options = GetOptions(); // your own method
IPublicClientApplication app = PublicClientApplicationBuilder.CreateWithApplicationOptions(options)
.Build();
Initialisieren einer vertraulichen Clientanwendung über Konfigurationsoptionen
Die gleiche Art von Muster gilt für vertrauliche Clientanwendungen. Sie können auch andere Parameter mithilfe von .WithXXX Modifizierern hinzufügen. In diesem Beispiel wird .WithCertificate verwendet.
ConfidentialClientApplicationOptions options = GetOptions(); // your own method
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.CreateWithApplicationOptions(options)
.WithCertificate(certificate)
.Build();
Builder-Modifikatoren
In den Codeausschnitten mit Anwendungs-Buildern können viele .With-Methoden als Modifier verwendet werden (zum Beispiel .WithCertificate und .WithRedirectUri).
Modifizierer, die für öffentliche und vertrauliche Clientanwendungen üblich sind
Die Modifizierer, die Sie auf einem öffentlichen Client oder einem vertraulichen Clientanwendungs-Generator festlegen können, finden Sie in der AbstractApplicationBuilder<T> Klasse. Die verschiedenen Methoden finden Sie in der Azure SDK für .NET Dokumentation.
Modifizierer speziell für Xamarin.iOS-Anwendungen
Die Modifizierer, die Sie für einen öffentlichen Clientanwendungs-Generator auf Xamarin.iOS festlegen können, sind:
| Modifikator | Description |
|---|---|
.WithIosKeychainSecurityGroup() |
nur Xamarin.iOS: Legt die Sicherheitsgruppe der iOS-Schlüsselkette (für die Cachepersistenz) fest. |
Modifizierer, die für vertrauliche Clientanwendungen spezifisch sind
Die für einen vertraulichen Clientanwendungs-Generator spezifischen Modifizierer finden Sie in der ConfidentialClientApplicationBuilder Klasse. Die verschiedenen Methoden finden Sie in der Azure SDK für .NET Dokumentation.
Modifizierer wie .WithCertificate(X509Certificate2 certificate) und .WithClientSecret(string clientSecret) schließen sich gegenseitig aus. Wenn Sie beides angeben, löst MSAL eine aussagekräftige Ausnahme aus.
Beispiel für die Verwendung von Modifizierern
Angenommen, Ihre Anwendung ist eine Branchenanwendung, die nur für Ihre Organisation gilt. Anschließend können Sie Folgendes schreiben:
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithAuthority(AzureCloudInstance.AzurePublic, tenantId)
.Build();
Die Programmierung für nationale Clouds wurde vereinfacht. Wenn Ihre Anwendung also eine mehrinstanzenfähige Anwendung in einer nationalen Cloud sein soll, könnten Sie beispielsweise Folgendes schreiben:
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithAuthority(AzureCloudInstance.AzureUsGovernment, AadAuthorityAudience.AzureAdMultipleOrgs)
.Build();
Es gibt auch eine Außerkraftsetzung für AD FS (MSAL.NET unterstützt nur AD FS 2019 oder höher):
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithAdfsAuthority("https://consoso.com/adfs")
.Build();
Wenn Sie ein Azure AD B2C-Entwickler sind, können Sie ihren Mandanten wie folgt angeben:
IPublicClientApplication app;
app = PublicClientApplicationBuilder.Create(clientId)
.WithB2CAuthority("https://fabrikamb2c.b2clogin.com/tfp/{tenant}/{PolicySignInSignUp}")
.Build();
Siehe auch
Nächste Schritte
Nachdem Sie die Clientanwendung initialisiert haben, besteht die nächste Aufgabe darin, Unterstützung für die Benutzeranmeldung, autorisierten API-Zugriff oder beides hinzuzufügen.
Unsere Anwendungsszenariodokumentation enthält Anleitungen zum Anmelden eines Benutzers und zum Abrufen eines Zugriffstokens für den Zugriff auf eine API im Namen dieses Benutzers: