Język

PublicClientApplication Klasa

Definicja

Klasa abstrakcyjna zawierająca typowe metody i właściwości interfejsu API. Aby uzyskać szczegółowe informacje, zobacz 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
Dziedziczenie
PublicClientApplication
Implementuje

Przykłady

Oto przykład użycia z PublicClientApplicationbrokerem uwierzytelniania i buforowaniem.

{
    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 =>

Uwagi

W przeciwieństwie do ConfidentialClientApplicationprogramu klienci publiczni nie mogą przechowywać wpisów tajnych czasu konfiguracji i w rezultacie nie mają wpisu tajnego klienta.

Identyfikator URI przekierowania wymagany do uwierzytelniania interakcyjnego jest automatycznie określany przez bibliotekę. Nie musi być jawnie przekazywany w konstruktorze. W zależności od strategii uwierzytelniania (np. za pośrednictwem Menedżera uwierzytelniania sieci Web, aplikacji uwierzytelniania, przeglądarki itp.), różne identyfikatory URI przekierowania będą używane przez bibliotekę MSAL. Identyfikatory URI przekierowania muszą być zawsze skonfigurowane w bloku Azure Active Directory w Azure Portal.

Właściwości

Nazwa Opis
AppConfig

Szczegółowe informacje na temat konfiguracji aplikacji clientApplication na potrzeby debugowania.

(Odziedziczone po ClientApplicationBase)
Authority

Pobiera adres URL urzędu lub usługi tokenu zabezpieczającego (STS), z której MSAL.NET uzyska tokeny zabezpieczające Wartość zwracana tej właściwości jest wartością podaną przez dewelopera w konstruktorze aplikacji lub w inny sposób wartością Microsoft.Identity.Client.ApplicationBase.DefaultAuthority statycznego elementu członkowskiego (czyli https://login.microsoftonline.com/common/)

(Odziedziczone po ClientApplicationBase)
IsSystemWebViewAvailable

Zwraca wartość true, jeśli biblioteka MSAL może używać przeglądarki systemowej.

OperatingSystemAccount

Specjalna wartość konta wskazująca, że bieżące konto systemu operacyjnego powinno być używane do rejestrowania użytkownika. Nie wszystkie systemy operacyjne i przepływy uwierzytelniania obsługują tę koncepcję, w takim przypadku wywołanie AcquireTokenSilent(IEnumerable<String>, IAccount) zgłasza błąd MsalUiRequiredException.

UserTokenCache

Pamięć podręczna tokenu użytkownika. Przechowuje tokeny dostępu, tokeny identyfikatorów i tokeny odświeżania dla kont. Jest on używany i aktualizowany w trybie dyskretnym w razie potrzeby podczas wywoływania AcquireTokenSilent(IEnumerable<String>, IAccount) lub jednego z przesłonięć elementu AcquireTokenSilent(IEnumerable<String>, IAccount). Jest on aktualizowany przez każdą metodę AcquireTokenXXX, z wyjątkiem AcquireTokenForClient której używa tylko pamięci podręcznej aplikacji (zobacz IConfidentialClientApplication).

(Odziedziczone po ClientApplicationBase)

Metody

Nazwa Opis
AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Nieinterakcyjne żądanie uzyskania tokenu zabezpieczającego zalogowanego użytkownika w Windows za pośrednictwem zintegrowanego uwierzytelniania Windows. Zobacz: https://aka.ms/msal-net-iwa. Konto używane w tych przesłonięciach jest pobierane z systemu operacyjnego jako bieżąca główna nazwa użytkownika.

AcquireTokenByUsernamePassword(IEnumerable<String>, String, SecureString)
Przestarzałe.

Nieinterakcyjne żądanie uzyskania tokenu zabezpieczającego z urzędu za pośrednictwem uwierzytelniania nazwy użytkownika/hasła. Zobacz https://aka.ms/msal-net-up , aby uzyskać szczegółowe informacje.

AcquireTokenByUsernamePassword(IEnumerable<String>, String, String)
Przestarzałe.

Nieinterakcyjne żądanie uzyskania tokenu zabezpieczającego z urzędu za pośrednictwem uwierzytelniania nazwy użytkownika/hasła. Zobacz https://aka.ms/msal-net-up , aby uzyskać szczegółowe informacje.

AcquireTokenInteractive(IEnumerable<String>)

Interakcyjne żądanie uzyskania tokenu dla określonych zakresów. Okno interakcyjne zostanie nadrzędne do określonego okna. Użytkownik będzie musiał wybrać konto.

AcquireTokenSilent(IEnumerable<String>, IAccount)

[Interfejs API w wersji 3] Próbuje uzyskać token dostępu dla account elementu z pamięci podręcznej tokenu użytkownika. Zobacz https://aka.ms/msal-net-acquiretokensilent , aby uzyskać więcej szczegółów

(Odziedziczone po ClientApplicationBase)
AcquireTokenSilent(IEnumerable<String>, String)

[Interfejs API w wersji 3] Próbuje uzyskać token dostępu dla IAccount elementu Username zgodnego z danym loginHintelementem z pamięci podręcznej tokenu użytkownika. Zobacz https://aka.ms/msal-net-acquiretokensilent , aby uzyskać więcej szczegółów

(Odziedziczone po ClientApplicationBase)
AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>)

Uzyskuje token zabezpieczający na urządzeniu bez przeglądarki internetowej, umożliwiając użytkownikowi uwierzytelnianie na innym urządzeniu. Odbywa się to w dwóch krokach:

  • Metoda najpierw uzyskuje kod urządzenia z urzędu i zwraca go do obiektu wywołującego za pośrednictwem elementu deviceCodeResultCallback. To wywołanie zwrotne zajmuje się interakcją z użytkownikiem w celu kierowania ich do uwierzytelniania (do określonego adresu URL z kodem)
  • Następnie metoda przechodzi do sondowania tokenu zabezpieczającego przyznanego po pomyślnym zalogowaniu się przez użytkownika na podstawie informacji o kodzie urządzenia
Zobacz https://aka.ms/msal-device-code-flow.
GetAccountAsync(String, CancellationToken)

IAccount Pobierz element według jego identyfikatora między kontami dostępnymi w pamięci podręcznej tokenów.

(Odziedziczone po ClientApplicationBase)
GetAccountAsync(String)

IAccount Pobierz element według jego identyfikatora między kontami dostępnymi w pamięci podręcznej tokenów.

(Odziedziczone po ClientApplicationBase)
GetAccountsAsync()

Zwraca wszystkie dostępne konta w pamięci podręcznej tokenu użytkownika dla aplikacji.

(Odziedziczone po ClientApplicationBase)
GetAccountsAsync(CancellationToken)

Zwraca wszystkie dostępne konta w pamięci podręcznej tokenu użytkownika dla aplikacji.

(Odziedziczone po ClientApplicationBase)
GetAccountsAsync(String, CancellationToken)

IAccount Pobierz kolekcję według identyfikatora między kontami dostępnymi w pamięci podręcznej tokenów na podstawie przepływu użytkownika. Dotyczy to scenariuszy Azure AD B2C.

(Odziedziczone po ClientApplicationBase)
GetAccountsAsync(String)

IAccount Pobierz kolekcję według identyfikatora między kontami dostępnymi w pamięci podręcznej tokenów na podstawie przepływu użytkownika. Dotyczy to scenariuszy Azure AD B2C.

(Odziedziczone po ClientApplicationBase)
IsBrokerAvailable()

Zwraca wartość true , jeśli można użyć brokera uwierzytelniania. Ta metoda jest wymagana tylko w przypadku scenariuszy mobilnych, które obsługują zarządzanie aplikacjami mobilnymi (MAM). W innych przypadkach użyj polecenia WithBroker, który powróci do korzystania z przeglądarki, jeśli broker uwierzytelniania jest niedostępny.

IsEmbeddedWebViewAvailable()

Zwraca wartość true , jeśli biblioteka MSAL może używać osadzonego widoku internetowego (przeglądarka internetowa).

IsProofOfPossessionSupportedByClient()

Służy do określania, czy obecnie dostępny broker jest w stanie wykonać weryfikację posiadania.

IsUserInteractive()

Zwraca wartość false , gdy aplikacja działa w trybie bezgłówkowym (np. gdy protokół SSH-d jest uruchamiany na maszynie z systemem Linux). Przeglądarki (widoki internetowe) i brokerzy nie mogą być używane, jeśli nie ma obsługi interfejsu użytkownika. W przypadku tych scenariuszy użyj polecenia AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>).

RemoveAsync(IAccount, CancellationToken)

Usuwa wszystkie tokeny w pamięci podręcznej dla określonego konta.

(Odziedziczone po ClientApplicationBase)
RemoveAsync(IAccount)

Usuwa wszystkie tokeny w pamięci podręcznej dla określonego konta.

(Odziedziczone po ClientApplicationBase)

Jawne implementacje interfejsu

Nazwa Opis
IByRefreshToken.AcquireTokenByRefreshToken(IEnumerable<String>, String)

Uzyskuje token dostępu z istniejącego tokenu odświeżania i przechowuje go, a token odświeżania w pamięci podręcznej tokenu użytkownika, gdzie będzie dostępny do dalszych wywołań AcquireTokenSilent. Tej metody można użyć w migracji do biblioteki MSAL z biblioteki ADAL w wersji 2 oraz w różnych scenariuszach integracji, w których jest dostępny token RefreshToken. Zobacz: https://aka.ms/msal-net-migration-adal2-msal2.

Metody rozszerzania

Nazwa Opis
IsEmbeddedWebViewAvailable(IPublicClientApplication)

Zwraca wartość true, jeśli biblioteka MSAL może używać osadzonego widoku internetowego (przeglądarki).

IsProofOfPossessionSupportedByClient(IPublicClientApplication)

Służy do określania, czy obecnie dostępny broker jest w stanie wykonać weryfikację posiadania.

IsSystemWebViewAvailable(IPublicClientApplication)

Zwraca wartość true, jeśli biblioteka MSAL może używać przeglądarki systemowej.

IsUserInteractive(IPublicClientApplication)

Zwraca wartość false, gdy program działa w bezgłowym systemie operacyjnym, na przykład gdy protokół SSH jest uruchamiany na maszynie z systemem Linux. Nie można używać przeglądarek (widoków internetowych) i brokerów, jeśli nie ma obsługi interfejsu użytkownika. Zamiast tego użyj polecenia AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) lub AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Dotyczy