PublicClientApplication Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Abstrakte Klasse, die allgemeine API-Methoden und -Eigenschaften enthält. Weitere Informationen finden Sie unter https://aka.ms/msal-net-client-applications
public sealed class PublicClientApplication : Microsoft.Identity.Client.ClientApplicationBase, Microsoft.Identity.Client.IByRefreshToken, Microsoft.Identity.Client.IPublicClientApplication
type PublicClientApplication = class
inherit ClientApplicationBase
interface IPublicClientApplication
interface IClientApplicationBase
interface IApplicationBase
interface IByRefreshToken
Public NotInheritable Class PublicClientApplication
Inherits ClientApplicationBase
Implements IByRefreshToken, IPublicClientApplication
- Vererbung
- Implementiert
Beispiele
Hier ist ein Beispiel für die Verwendung PublicClientApplication mit einem Authentifizierungsbroker und zwischenspeichern.
{
string tenant = s_tids[s_currentTid];
return $"https://login.microsoftonline.com/{tenant}";
}
private static IPublicClientApplication CreatePca(bool withWamBroker = false)
{
// <PCABootstrapSample>
var pcaBuilder = PublicClientApplicationBuilder
.Create(s_clientIdForPublicApp)
.WithAuthority(GetAuthority())
.WithLogging(Log, LogLevel.Verbose, true);
if (withWamBroker)
{
IntPtr consoleWindowHandle = GetConsoleWindow();
Func<IntPtr> consoleWindowHandleProvider = () => consoleWindowHandle;
pcaBuilder.WithBroker(new BrokerOptions(BrokerOptions.OperatingSystems.Windows) { Title = "Only Windows" })
.WithParentActivityOrWindow(consoleWindowHandleProvider);
}
Console.WriteLine($"IsBrokerAvailable: {pcaBuilder.IsBrokerAvailable()}");
var pca = pcaBuilder.WithRedirectUri("http://localhost") // required for DefaultOsBrowser
.Build();
pca.UserTokenCache.SetBeforeAccess(notificationArgs =>
{
notificationArgs.TokenCache.DeserializeMsalV3(File.Exists(CacheFilePath)
? File.ReadAllBytes(CacheFilePath)
: null);
});
pca.UserTokenCache.SetAfterAccess(notificationArgs =>
Hinweise
Im Gegensatz dazu ConfidentialClientApplicationkönnen öffentliche Clients keine geheimen Konfigurationszeitschlüssel enthalten und haben daher keinen geheimen Clientschlüssel.
Der für die interaktive Authentifizierung erforderliche Umleitungs-URI wird automatisch von der Bibliothek bestimmt. Sie muss nicht explizit im Konstruktor übergeben werden. Abhängig von der Authentifizierungsstrategie (z. B. über den Webauthentifizierungs-Manager, die Authentifizierungs-App, den Browser usw.) werden verschiedene Umleitungs-URIs von MSAL verwendet. Umleitungs-URIs müssen immer im blatt Azure Active Directory im Azure-Portal konfiguriert werden.
Eigenschaften
| Name | Beschreibung |
|---|---|
| AppConfig |
Details zur Konfiguration der ClientApplication für Debuggingzwecke. (Geerbt von ClientApplicationBase) |
| Authority |
Ruft die URL der Autorität oder des Sicherheitstokendiensts (Security Token Service, STS) ab, aus dem MSAL.NET Sicherheitstoken abrufen. Der Rückgabewert dieser Eigenschaft ist entweder der Vom Entwickler im Konstruktor der Anwendung bereitgestellte Wert oder anderweitig der Wert des Microsoft.Identity.Client.ApplicationBase.DefaultAuthority statischen Elements (d |
| IsSystemWebViewAvailable |
Gibt true zurück, wenn MSAL einen Systembrowser verwenden kann. |
| OperatingSystemAccount |
Ein spezieller Kontowert, der angibt, dass das aktuelle Betriebssystemkonto verwendet werden soll, um den Benutzer anzumelden. Nicht alle Betriebssysteme und Authentifizierungsflüsse unterstützen dieses Konzept, in diesem Fall löst das Aufrufen AcquireTokenSilent(IEnumerable<String>, IAccount) eine MsalUiRequiredException. |
| UserTokenCache |
Benutzertokencache. Sie enthält Zugriffstoken, ID-Token und Aktualisierungstoken für Konten. Sie wird verwendet und bei Bedarf beim Aufrufen AcquireTokenSilent(IEnumerable<String>, IAccount) oder einer der Außerkraftsetzungen AcquireTokenSilent(IEnumerable<String>, IAccount)von .
Sie wird von jeder AcquireTokenXXX-Methode aktualisiert, mit Ausnahme, von |
Methoden
| Name | Beschreibung |
|---|---|
| AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>) |
Nicht interaktive Anforderung zum Abrufen eines Sicherheitstokens für den angemeldeten Benutzer in Windows über integrierte Windows-Authentifizierung. Siehe https://aka.ms/msal-net-iwa. Das in diesen Außerkraftsetzungen verwendete Konto wird vom Betriebssystem als aktueller Benutzerprinzipalname abgerufen. |
| AcquireTokenByUsernamePassword(IEnumerable<String>, String, SecureString) |
Veraltet.
Nicht interaktive Anforderung zum Abrufen eines Sicherheitstokens von der Autorität über die Authentifizierung mit Benutzername/Kennwort. Weitere Informationen finden Sie unter https://aka.ms/msal-net-up. |
| AcquireTokenByUsernamePassword(IEnumerable<String>, String, String) |
Veraltet.
Nicht interaktive Anforderung zum Abrufen eines Sicherheitstokens von der Autorität über die Authentifizierung mit Benutzername/Kennwort. Weitere Informationen finden Sie unter https://aka.ms/msal-net-up. |
| AcquireTokenInteractive(IEnumerable<String>) |
Interaktive Anforderung zum Abrufen eines Tokens für die angegebenen Bereiche. Das interaktive Fenster wird dem angegebenen Fenster übergeordnet. Der Benutzer muss ein Konto auswählen. |
| AcquireTokenSilent(IEnumerable<String>, IAccount) |
[V3-API] Versucht, ein Zugriffstoken für den |
| AcquireTokenSilent(IEnumerable<String>, String) |
[V3-API] Versucht, ein Zugriffstoken für die IAccount Übereinstimmung mit dem Username angegebenen |
| AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) |
Erwirbt ein Sicherheitstoken auf einem Gerät ohne Webbrowser, indem der Benutzer sich auf einem anderen Gerät authentifiziert. Dies erfolgt in zwei Schritten:
|
| GetAccountAsync(String, CancellationToken) |
Rufen Sie den IAccount Bezeichner unter den Konten ab, die im Tokencache verfügbar sind. (Geerbt von ClientApplicationBase) |
| GetAccountAsync(String) |
Rufen Sie den IAccount Bezeichner unter den Konten ab, die im Tokencache verfügbar sind. (Geerbt von ClientApplicationBase) |
| GetAccountsAsync() |
Gibt alle verfügbaren Konten im Benutzertokencache für die Anwendung zurück. (Geerbt von ClientApplicationBase) |
| GetAccountsAsync(CancellationToken) |
Gibt alle verfügbaren Konten im Benutzertokencache für die Anwendung zurück. (Geerbt von ClientApplicationBase) |
| GetAccountsAsync(String, CancellationToken) |
Rufen Sie die IAccount Sammlung anhand des Bezeichners unter den Konten ab, die im Tokencache verfügbar sind, basierend auf dem Benutzerablauf. Dies gilt für Azure AD B2C-Szenarien. (Geerbt von ClientApplicationBase) |
| GetAccountsAsync(String) |
Rufen Sie die IAccount Sammlung anhand des Bezeichners unter den Konten ab, die im Tokencache verfügbar sind, basierend auf dem Benutzerablauf. Dies gilt für Azure AD B2C-Szenarien. (Geerbt von ClientApplicationBase) |
| IsBrokerAvailable() |
Gibt zurück |
| IsEmbeddedWebViewAvailable() |
Gibt zurück |
| IsProofOfPossessionSupportedByClient() |
Wird verwendet, um zu ermitteln, ob der derzeit verfügbare Broker in der Lage ist, Proof-of-Possession durchzuführen. |
| IsUserInteractive() |
Gibt zurück |
| RemoveAsync(IAccount, CancellationToken) |
Entfernt alle Token im Cache für das angegebene Konto. (Geerbt von ClientApplicationBase) |
| RemoveAsync(IAccount) |
Entfernt alle Token im Cache für das angegebene Konto. (Geerbt von ClientApplicationBase) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IByRefreshToken.AcquireTokenByRefreshToken(IEnumerable<String>, String) |
Ruft ein Zugriffstoken von einem vorhandenen Aktualisierungstoken ab und speichert es und das Aktualisierungstoken im Benutzertokencache, wo es für weitere AcquireTokenSilent-Aufrufe verfügbar ist. Diese Methode kann bei der Migration zu MSAL von ADAL v2 und in verschiedenen Integrationsszenarien verwendet werden, in denen Ein RefreshToken verfügbar ist. Siehe https://aka.ms/msal-net-migration-adal2-msal2. |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| IsEmbeddedWebViewAvailable(IPublicClientApplication) |
Gibt true zurück, wenn MSAL eine eingebettete Webview (Browser) verwenden kann. |
| IsProofOfPossessionSupportedByClient(IPublicClientApplication) |
Wird verwendet, um zu ermitteln, ob der derzeit verfügbare Broker in der Lage ist, Proof-of-Possession durchzuführen. |
| IsSystemWebViewAvailable(IPublicClientApplication) |
Gibt true zurück, wenn MSAL einen Systembrowser verwenden kann. |
| IsUserInteractive(IPublicClientApplication) |
Gibt "false" zurück, wenn das Programm im headless-Betriebssystem ausgeführt wird, z. B. wenn SSH auf einem Linux-Computer ausgeführt wird. Browser (Webviews) und Broker können nicht verwendet werden, wenn keine Ui-Unterstützung vorhanden ist. Verwenden AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) Sie stattdessen oder AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>) |