PublicClientApplication Klasse

Definition

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
PublicClientApplication
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 (dhttps://login.microsoftonline.com/common/.

(Geerbt von ClientApplicationBase)
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 AcquireTokenForClient der nur der Anwendungscache verwendet wird (siehe IConfidentialClientApplication).

(Geerbt von ClientApplicationBase)

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 account Benutzertokencache abzurufen. Weitere Informationen finden Sie unter https://aka.ms/msal-net-acquiretokensilent

(Geerbt von ClientApplicationBase)
AcquireTokenSilent(IEnumerable<String>, String)

[V3-API] Versucht, ein Zugriffstoken für die IAccount Übereinstimmung mit dem Username angegebenen loginHintVom Benutzertokencache abzurufen. Weitere Informationen finden Sie unter https://aka.ms/msal-net-acquiretokensilent

(Geerbt von ClientApplicationBase)
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:

  • Die Methode ruft zunächst einen Gerätecode von der Autorität ab und gibt ihn über den deviceCodeResultCallbackAufrufer zurück. Dieser Rückruf übernimmt die Interaktion mit dem Benutzer, um sie zur Authentifizierung zu leiten (bei einer bestimmten URL mit einem Code)
  • Die Methode fragt dann nach dem Sicherheitstoken ab, das nach erfolgreicher Anmeldung durch den Benutzer basierend auf den Gerätecodeinformationen gewährt wird.
Siehe https://aka.ms/msal-device-code-flow..
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 true , wenn ein Authentifizierungsbroker verwendet werden kann. Diese Methode ist nur für mobile Szenarien erforderlich, die die Verwaltung mobiler Anwendungen (Mobile Application Management, MAM) unterstützen. Verwenden Sie WithBrokerin anderen Fällen die Verwendung eines Browsers, wenn ein Authentifizierungsbroker nicht verfügbar ist.

IsEmbeddedWebViewAvailable()

Gibt zurück true , wenn MSAL eine eingebettete Webansicht (Webbrowser) verwenden kann.

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 false , wenn die Anwendung im Headless-Modus ausgeführt wird (z. B. wenn SSH-d in einen Linux-Computer wechselt). Browser (Webansichten) und Broker können nicht verwendet werden, wenn keine UI-Unterstützung vorhanden ist. Verwenden Sie für diese Szenarien die Verwendung AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>).

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>)

Gilt für: