PublicClientApplication Classe

Definizione

Classe astratta contenente i metodi e le proprietà comuni dell'API. Per informazioni dettagliate, vedere 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
Ereditarietà
PublicClientApplication
Implementazioni

Esempio

Di seguito è riportato un esempio di come usare PublicClientApplication con un broker di autenticazione e la memorizzazione nella cache.

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

Commenti

A differenza di ConfidentialClientApplication, i client pubblici non sono in grado di contenere segreti del tempo di configurazione e di conseguenza non hanno segreti client.

L'URI di reindirizzamento necessario per l'autenticazione interattiva viene determinato automaticamente dalla libreria. Non è necessario passare in modo esplicito nel costruttore . A seconda della strategia di autenticazione (ad esempio, tramite Gestione autenticazione Web, app di autenticazione, browser e così via), verranno usati URI di reindirizzamento diversi da MSAL. Gli URI di reindirizzamento devono essere sempre configurati nel pannello Azure Active Directory nel portale di Azure.

Proprietà

Nome Descrizione
AppConfig

Informazioni dettagliate sulla configurazione di ClientApplication a scopo di debug.

(Ereditato da ClientApplicationBase)
Authority

Ottiene l'URL dell'autorità o del servizio token di sicurezza da cui MSAL.NET acquisirà i token di sicurezza Il valore restituito di questa proprietà è il valore fornito dallo sviluppatore nel costruttore dell'applicazione oppure il valore del Microsoft.Identity.Client.ApplicationBase.DefaultAuthority membro statico (ovvero https://login.microsoftonline.com/common/)

(Ereditato da ClientApplicationBase)
IsSystemWebViewAvailable

Restituisce true se MSAL può usare un browser di sistema.

OperatingSystemAccount

Valore dell'account speciale che indica che l'account del sistema operativo corrente deve essere usato per registrare l'utente. Non tutti i sistemi operativi e i flussi di autenticazione supportano questo concetto, nel qual caso la chiamata AcquireTokenSilent(IEnumerable<String>, IAccount) genera un'eccezione MsalUiRequiredException.

UserTokenCache

Cache dei token utente. Contiene token di accesso, token ID e token di aggiornamento per gli account. Viene usato e aggiornato automaticamente se necessario quando si chiama AcquireTokenSilent(IEnumerable<String>, IAccount) o uno degli override di AcquireTokenSilent(IEnumerable<String>, IAccount). Viene aggiornato da ogni metodo AcquireTokenXXX, ad eccezione del AcquireTokenForClient quale usa solo la cache dell'applicazione (vedere IConfidentialClientApplication).

(Ereditato da ClientApplicationBase)

Metodi

Nome Descrizione
AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Richiesta non interattiva per acquisire un token di sicurezza per l'utente connesso in Windows, tramite l'autenticazione integrata Windows. Vedete https://aka.ms/msal-net-iwa. L'account usato in questa sostituzione viene estratto dal sistema operativo come nome dell'entità utente corrente.

AcquireTokenByUsernamePassword(IEnumerable<String>, String, SecureString)
Obsoleti.

Richiesta non interattiva per acquisire un token di sicurezza dall'autorità tramite l'autenticazione con nome utente/password. Per informazioni dettagliate, vedere https://aka.ms/msal-net-up.

AcquireTokenByUsernamePassword(IEnumerable<String>, String, String)
Obsoleti.

Richiesta non interattiva per acquisire un token di sicurezza dall'autorità tramite l'autenticazione con nome utente/password. Per informazioni dettagliate, vedere https://aka.ms/msal-net-up.

AcquireTokenInteractive(IEnumerable<String>)

Richiesta interattiva per acquisire un token per gli ambiti specificati. La finestra interattiva sarà padre della finestra specificata. L'utente dovrà selezionare un account.

AcquireTokenSilent(IEnumerable<String>, IAccount)

[API V3] Tenta di acquisire un token di accesso per account dalla cache dei token utente. Per altri dettagli, vedere https://aka.ms/msal-net-acquiretokensilent

(Ereditato da ClientApplicationBase)
AcquireTokenSilent(IEnumerable<String>, String)

[API V3] Tenta di acquisire un token di accesso per avere IAccount la corrispondenza con l'oggetto Username specificato loginHintdalla cache dei token utente. Per altri dettagli, vedere https://aka.ms/msal-net-acquiretokensilent

(Ereditato da ClientApplicationBase)
AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>)

Acquisisce un token di sicurezza in un dispositivo senza un Web browser, consentendo all'utente di eseguire l'autenticazione in un altro dispositivo. Questa operazione viene eseguita in due passaggi:

  • Il metodo acquisisce innanzitutto un codice del dispositivo dall'autorità e lo restituisce al chiamante tramite .deviceCodeResultCallback Questo callback si occupa dell'interazione con l'utente per indirizzarli all'autenticazione (a un URL specifico, con un codice)
  • Il metodo procede quindi al polling del token di sicurezza concesso al completamento dell'accesso da parte dell'utente in base alle informazioni sul codice del dispositivo
Fare riferimento a https://aka.ms/msal-device-code-flow.
GetAccountAsync(String, CancellationToken)

Ottenere in base al IAccount relativo identificatore tra gli account disponibili nella cache dei token.

(Ereditato da ClientApplicationBase)
GetAccountAsync(String)

Ottenere in base al IAccount relativo identificatore tra gli account disponibili nella cache dei token.

(Ereditato da ClientApplicationBase)
GetAccountsAsync()

Restituisce tutti gli account disponibili nella cache dei token utente per l'applicazione.

(Ereditato da ClientApplicationBase)
GetAccountsAsync(CancellationToken)

Restituisce tutti gli account disponibili nella cache dei token utente per l'applicazione.

(Ereditato da ClientApplicationBase)
GetAccountsAsync(String, CancellationToken)

Ottenere la IAccount raccolta in base al relativo identificatore tra gli account disponibili nella cache dei token, in base al flusso utente. Questo vale per Azure scenari di Active Directory B2C.

(Ereditato da ClientApplicationBase)
GetAccountsAsync(String)

Ottenere la IAccount raccolta in base al relativo identificatore tra gli account disponibili nella cache dei token, in base al flusso utente. Questo vale per Azure scenari di Active Directory B2C.

(Ereditato da ClientApplicationBase)
IsBrokerAvailable()

Restituisce true se è possibile utilizzare un broker di autenticazione. Questo metodo è necessario solo per gli scenari mobili che supportano gestione di applicazioni mobili (MAM). In altri casi, usare WithBroker, che eseguirà il fallback per usare un browser se un broker di autenticazione non è disponibile.

IsEmbeddedWebViewAvailable()

Restituisce true se MSAL può usare una visualizzazione Web incorporata (Web browser).

IsProofOfPossessionSupportedByClient()

Utilizzato per determinare se il broker attualmente disponibile è in grado di eseguire proof-of-possession.

IsUserInteractive()

Restituisce false quando l'applicazione viene eseguita in modalità headless, ad esempio quando SSH-d in un computer Linux. I browser (visualizzazioni Web) e i broker non possono essere usati se non è disponibile alcun supporto dell'interfaccia utente. Per questi scenari, usare AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>).

RemoveAsync(IAccount, CancellationToken)

Rimuove tutti i token nella cache per l'account specificato.

(Ereditato da ClientApplicationBase)
RemoveAsync(IAccount)

Rimuove tutti i token nella cache per l'account specificato.

(Ereditato da ClientApplicationBase)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IByRefreshToken.AcquireTokenByRefreshToken(IEnumerable<String>, String)

Acquisisce un token di accesso da un token di aggiornamento esistente e lo archivia e il token di aggiornamento, nella cache dei token utente, in cui sarà disponibile per altre chiamate AcquireTokenSilent. Questo metodo può essere usato nella migrazione a MSAL da ADAL v2 e in vari scenari di integrazione in cui è disponibile un refreshToken. Vedete https://aka.ms/msal-net-migration-adal2-msal2.

Metodi di estensione

Nome Descrizione
IsEmbeddedWebViewAvailable(IPublicClientApplication)

Restituisce true se MSAL può usare una visualizzazione Web incorporata (browser).

IsProofOfPossessionSupportedByClient(IPublicClientApplication)

Utilizzato per determinare se il broker attualmente disponibile è in grado di eseguire proof-of-possession.

IsSystemWebViewAvailable(IPublicClientApplication)

Restituisce true se MSAL può usare un browser di sistema.

IsUserInteractive(IPublicClientApplication)

Restituisce false quando il programma viene eseguito nel sistema operativo headless, ad esempio quando SSH viene eseguito in un computer Linux. I browser (webview) e i broker non possono essere usati se non è disponibile alcun supporto dell'interfaccia utente. In alternativa, usare AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) o AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Si applica a