Språk

PublicClientApplication Klass

Definition

Abstrakt klass som innehåller vanliga API-metoder och egenskaper. Mer information finns i 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
Arv
PublicClientApplication
Implementeringar

Exempel

Här är ett exempel på hur du använder PublicClientApplication med en autentiseringskoordinator och cachelagring.

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

Kommentarer

Till skillnad från ConfidentialClientApplicationkan offentliga klienter inte lagra konfigurationstidshemligheter och har därför ingen klienthemlighet.

Omdirigerings-URI:n som behövs för interaktiv autentisering bestäms automatiskt av biblioteket. Det behöver inte skickas uttryckligen i konstruktorn. Beroende på autentiseringsstrategin (t.ex. via webbautentiseringshanteraren, autentiseringsappen, webbläsaren osv.) används olika omdirigerings-URI:er av MSAL. Omdirigerings-URI:er måste alltid konfigureras på bladet Azure Active Directory i Azure Portal.

Egenskaper

Name Description
AppConfig

Information om konfigurationen av ClientApplication i felsökningssyfte.

(Ärvd från ClientApplicationBase)
Authority

Hämtar URL:en för utfärdaren eller säkerhetstokentjänsten (STS) från vilken MSAL.NET hämtar säkerhetstokenS returneringsvärdet för den här egenskapen är antingen det värde som tillhandahålls av utvecklaren i konstruktorn i programmet eller på annat sätt värdet för den Microsoft.Identity.Client.ApplicationBase.DefaultAuthority statiska medlemmen (dvshttps://login.microsoftonline.com/common/. )

(Ärvd från ClientApplicationBase)
IsSystemWebViewAvailable

Returnerar sant om MSAL kan använda en systemwebbläsare.

OperatingSystemAccount

Ett särskilt kontovärde som anger att det aktuella operativsystemets konto ska användas för att logga in användaren. Alla operativsystem och autentiseringsflöden stöder inte det här konceptet, i vilket fall anropet AcquireTokenSilent(IEnumerable<String>, IAccount) genererar en MsalUiRequiredException.

UserTokenCache

Cacheminne för användartoken. Den innehåller åtkomsttoken, ID-token och uppdateringstoken för konton. Den används och uppdateras tyst om det behövs vid anrop AcquireTokenSilent(IEnumerable<String>, IAccount) eller någon av åsidosättningarna för AcquireTokenSilent(IEnumerable<String>, IAccount). Den uppdateras av varje AcquireTokenXXX-metod, med undantag för AcquireTokenForClient vilken endast använder programcachen (se IConfidentialClientApplication).

(Ärvd från ClientApplicationBase)

Metoder

Name Description
AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Icke-interaktiv begäran om att hämta en säkerhetstoken för den inloggade användaren i Windows via integrerad Windows-autentisering. Se även https://aka.ms/msal-net-iwa. Kontot som används i dessa åsidosättningar hämtas från operativsystemet som det aktuella användarens huvudnamn.

AcquireTokenByUsernamePassword(IEnumerable<String>, String, SecureString)
Föråldrad.

Icke-interaktiv begäran om att hämta en säkerhetstoken från utfärdaren via användarnamn/lösenordsautentisering. Se https://aka.ms/msal-net-up för mer information.

AcquireTokenByUsernamePassword(IEnumerable<String>, String, String)
Föråldrad.

Icke-interaktiv begäran om att hämta en säkerhetstoken från utfärdaren via användarnamn/lösenordsautentisering. Se https://aka.ms/msal-net-up för mer information.

AcquireTokenInteractive(IEnumerable<String>)

Interaktiv begäran om att hämta en token för de angivna omfången. Det interaktiva fönstret kommer att vara överordnat till det angivna fönstret. Användaren måste välja ett konto.

AcquireTokenSilent(IEnumerable<String>, IAccount)

[V3 API] Försöker hämta en åtkomsttoken för från cacheminnet för account användartoken. Mer information finns i https://aka.ms/msal-net-acquiretokensilent

(Ärvd från ClientApplicationBase)
AcquireTokenSilent(IEnumerable<String>, String)

[V3 API] Försöker hämta en åtkomsttoken för IAccount att matcha den Username angivna loginHint, från cacheminnet för användartoken. Mer information finns i https://aka.ms/msal-net-acquiretokensilent

(Ärvd från ClientApplicationBase)
AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>)

Hämtar en säkerhetstoken på en enhet utan webbläsare genom att låta användaren autentisera på en annan enhet. Detta görs i två steg:

  • Metoden hämtar först en enhetskod från utfärdaren och returnerar den till anroparen via deviceCodeResultCallback. Det här återanropet tar hand om att interagera med användaren för att dirigera dem att autentisera (till en specifik URL, med en kod)
  • Metoden fortsätter sedan att söka efter säkerhetstoken som beviljas vid lyckad inloggning av användaren baserat på information om enhetskod
Se https://aka.ms/msal-device-code-flow.
GetAccountAsync(String, CancellationToken)

IAccount Hämta efter dess identifierare bland de konton som är tillgängliga i tokencachen.

(Ärvd från ClientApplicationBase)
GetAccountAsync(String)

IAccount Hämta efter dess identifierare bland de konton som är tillgängliga i tokencachen.

(Ärvd från ClientApplicationBase)
GetAccountsAsync()

Returnerar alla tillgängliga konton i programmets cacheminne för användartoken.

(Ärvd från ClientApplicationBase)
GetAccountsAsync(CancellationToken)

Returnerar alla tillgängliga konton i programmets cacheminne för användartoken.

(Ärvd från ClientApplicationBase)
GetAccountsAsync(String, CancellationToken)

IAccount Hämta samlingen efter dess identifierare bland de konton som är tillgängliga i tokencachen baserat på användarflödet. Detta gäller Azure AD B2C-scenarier.

(Ärvd från ClientApplicationBase)
GetAccountsAsync(String)

IAccount Hämta samlingen efter dess identifierare bland de konton som är tillgängliga i tokencachen baserat på användarflödet. Detta gäller Azure AD B2C-scenarier.

(Ärvd från ClientApplicationBase)
IsBrokerAvailable()

Returnerar true om en autentiseringskoordinator kan användas. Den här metoden behövs bara för mobila scenarier som stöder hantering av mobilprogram (MAM). I andra fall använder du WithBroker, som återgår till att använda en webbläsare om en autentiseringskoordinator inte är tillgänglig.

IsEmbeddedWebViewAvailable()

Returnerar true om MSAL kan använda en inbäddad webbvy (webbläsare).

IsProofOfPossessionSupportedByClient()

Används för att avgöra om den för närvarande tillgängliga mäklaren kan utföra Proof-of-Possession.

IsUserInteractive()

Returnerar false när programmet körs i huvudlöst läge (t.ex. när SSH-d till en Linux-dator). Webbläsare (webbvyer) och koordinatorer kan inte användas om det inte finns något stöd för användargränssnittet. I dessa scenarier använder du AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>).

RemoveAsync(IAccount, CancellationToken)

Tar bort alla token i cacheminnet för det angivna kontot.

(Ärvd från ClientApplicationBase)
RemoveAsync(IAccount)

Tar bort alla token i cacheminnet för det angivna kontot.

(Ärvd från ClientApplicationBase)

Explicita gränssnittsimplementeringar

Name Description
IByRefreshToken.AcquireTokenByRefreshToken(IEnumerable<String>, String)

Hämtar en åtkomsttoken från en befintlig uppdateringstoken och lagrar den och uppdateringstoken i cacheminnet för användartoken, där den blir tillgänglig för ytterligare AcquireTokenSilent-anrop. Den här metoden kan användas vid migrering till MSAL från ADAL v2 och i olika integreringsscenarier där du har en RefreshToken tillgänglig. Se även https://aka.ms/msal-net-migration-adal2-msal2.

Tilläggsmetoder

Name Description
IsEmbeddedWebViewAvailable(IPublicClientApplication)

Returnerar sant om MSAL kan använda en inbäddad webbvy (webbläsare).

IsProofOfPossessionSupportedByClient(IPublicClientApplication)

Används för att avgöra om den för närvarande tillgängliga mäklaren kan utföra Proof-of-Possession.

IsSystemWebViewAvailable(IPublicClientApplication)

Returnerar sant om MSAL kan använda en systemwebbläsare.

IsUserInteractive(IPublicClientApplication)

Returnerar false när programmet körs i ett huvudlöst operativsystem, till exempel när SSH-ed in i en Linux-dator. Webbläsare (webbvyer) och koordinatorer kan inte användas om det inte finns något stöd för användargränssnittet. AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) Använd i stället ellerAcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Gäller för