PublicClientApplication Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 |
| 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 |
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 |
| AcquireTokenSilent(IEnumerable<String>, String) |
[API V3] Tenta di acquisire un token di accesso per avere IAccount la corrispondenza con l'oggetto Username specificato |
| 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:
|
| 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 |
| IsEmbeddedWebViewAvailable() |
Restituisce |
| IsProofOfPossessionSupportedByClient() |
Utilizzato per determinare se il broker attualmente disponibile è in grado di eseguire proof-of-possession. |
| IsUserInteractive() |
Restituisce |
| 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>) |