PublicClientApplication Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Classe abstraite contenant les méthodes et propriétés d’API courantes. Pour plus d’informations, consultez 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
- Héritage
- Implémente
Exemples
Voici un exemple d’utilisation PublicClientApplication avec un répartiteur d’authentification et la mise en 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 =>
Remarques
Contrairement ConfidentialClientApplicationaux clients publics ne peuvent pas contenir de secrets de temps de configuration et, par conséquent, n’ont pas de secret client.
L’URI de redirection nécessaire pour l’authentification interactive est automatiquement déterminé par la bibliothèque. Il n’est pas nécessaire de passer explicitement dans le constructeur. Selon la stratégie d’authentification (par exemple, via le Gestionnaire d’authentification web, l’application d’authentification, le navigateur, etc.), différentes URI de redirection seront utilisés par MSAL. Les URI de redirection doivent toujours être configurés dans le panneau Azure Active Directory dans le Portail Azure.
Propriétés
| Nom | Description |
|---|---|
| AppConfig |
Détails sur la configuration de ClientApplication à des fins de débogage. (Hérité de ClientApplicationBase) |
| Authority |
Obtient l’URL de l’autorité ou du service de jeton de sécurité (STS) à partir duquel MSAL.NET acquérira des jetons de sécurité La valeur de retour de cette propriété est soit la valeur fournie par le développeur dans le constructeur de l’application, soit la valeur du Microsoft.Identity.Client.ApplicationBase.DefaultAuthority membre statique (autrement |
| IsSystemWebViewAvailable |
Retourne true si MSAL peut utiliser un navigateur système. |
| OperatingSystemAccount |
Valeur de compte spéciale qui indique que le compte de système d’exploitation actuel doit être utilisé pour connecter l’utilisateur. Tous les systèmes d’exploitation et flux d’authentification ne prennent pas en charge ce concept, auquel cas l’appel AcquireTokenSilent(IEnumerable<String>, IAccount) lève un MsalUiRequiredException. |
| UserTokenCache |
Cache de jetons utilisateur. Il contient des jetons d’accès, des jetons d’ID et des jetons d’actualisation pour les comptes. Elle est utilisée et mise à jour silencieusement si nécessaire lors de l’appel AcquireTokenSilent(IEnumerable<String>, IAccount) ou de l’une des substitutions de AcquireTokenSilent(IEnumerable<String>, IAccount).
Elle est mise à jour par chaque méthode AcquireTokenXXX, à l’exception de laquelle elle utilise uniquement le cache d’application |
Méthodes
| Nom | Description |
|---|---|
| AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>) |
Demande non interactive pour acquérir un jeton de sécurité pour l’utilisateur connecté dans Windows, via l’authentification intégrée Windows. Voir https://aka.ms/msal-net-iwa. Le compte utilisé dans ces remplacements est extrait du système d’exploitation comme nom d’utilisateur principal actuel. |
| AcquireTokenByUsernamePassword(IEnumerable<String>, String, SecureString) |
Obsolète.
Demande non interactive pour acquérir un jeton de sécurité auprès de l’autorité, via l’authentification par nom d’utilisateur/mot de passe. Pour plus d’informations, consultez https://aka.ms/msal-net-up. |
| AcquireTokenByUsernamePassword(IEnumerable<String>, String, String) |
Obsolète.
Demande non interactive pour acquérir un jeton de sécurité auprès de l’autorité, via l’authentification par nom d’utilisateur/mot de passe. Pour plus d’informations, consultez https://aka.ms/msal-net-up. |
| AcquireTokenInteractive(IEnumerable<String>) |
Demande interactive d’acquérir un jeton pour les étendues spécifiées. La fenêtre interactive sera parentée de la fenêtre spécifiée. L’utilisateur doit sélectionner un compte. |
| AcquireTokenSilent(IEnumerable<String>, IAccount) |
[API V3] Tente d’acquérir un jeton d’accès pour le |
| AcquireTokenSilent(IEnumerable<String>, String) |
[API V3] Tente d’acquérir un jeton d’accès pour avoir IAccount la Username correspondance donnée |
| AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) |
Acquiert un jeton de sécurité sur un appareil sans navigateur web, en laissant l’utilisateur s’authentifier sur un autre appareil. Pour ce faire, procédez comme suit :
|
| GetAccountAsync(String, CancellationToken) |
Obtenez l’identificateur IAccount par son identificateur parmi les comptes disponibles dans le cache de jetons. (Hérité de ClientApplicationBase) |
| GetAccountAsync(String) |
Obtenez l’identificateur IAccount par son identificateur parmi les comptes disponibles dans le cache de jetons. (Hérité de ClientApplicationBase) |
| GetAccountsAsync() |
Retourne tous les comptes disponibles dans le cache de jetons utilisateur pour l’application. (Hérité de ClientApplicationBase) |
| GetAccountsAsync(CancellationToken) |
Retourne tous les comptes disponibles dans le cache de jetons utilisateur pour l’application. (Hérité de ClientApplicationBase) |
| GetAccountsAsync(String, CancellationToken) |
Obtenez la IAccount collection par son identificateur parmi les comptes disponibles dans le cache de jetons, en fonction du flux utilisateur. Cela concerne Azure scénarios AD B2C. (Hérité de ClientApplicationBase) |
| GetAccountsAsync(String) |
Obtenez la IAccount collection par son identificateur parmi les comptes disponibles dans le cache de jetons, en fonction du flux utilisateur. Cela concerne Azure scénarios AD B2C. (Hérité de ClientApplicationBase) |
| IsBrokerAvailable() |
Retourne |
| IsEmbeddedWebViewAvailable() |
Retourne |
| IsProofOfPossessionSupportedByClient() |
Utilisé pour déterminer si le répartiteur actuellement disponible est en mesure d’effectuer une preuve de possession. |
| IsUserInteractive() |
Retourne |
| RemoveAsync(IAccount, CancellationToken) |
Supprime tous les jetons dans le cache du compte spécifié. (Hérité de ClientApplicationBase) |
| RemoveAsync(IAccount) |
Supprime tous les jetons dans le cache du compte spécifié. (Hérité de ClientApplicationBase) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| IByRefreshToken.AcquireTokenByRefreshToken(IEnumerable<String>, String) |
Acquiert un jeton d’accès à partir d’un jeton d’actualisation existant et le stocke, ainsi que le jeton d’actualisation, dans le cache des jetons utilisateur, où il sera disponible pour d’autres appels AcquireTokenSilent. Cette méthode peut être utilisée dans la migration vers MSAL à partir d’ADAL v2 et dans différents scénarios d’intégration où vous disposez d’un RefreshToken disponible. Voir https://aka.ms/msal-net-migration-adal2-msal2. |
Méthodes d’extension
| Nom | Description |
|---|---|
| IsEmbeddedWebViewAvailable(IPublicClientApplication) |
Retourne true si MSAL peut utiliser une vue web incorporée (navigateur). |
| IsProofOfPossessionSupportedByClient(IPublicClientApplication) |
Utilisé pour déterminer si le répartiteur actuellement disponible est en mesure d’effectuer une preuve de possession. |
| IsSystemWebViewAvailable(IPublicClientApplication) |
Retourne true si MSAL peut utiliser un navigateur système. |
| IsUserInteractive(IPublicClientApplication) |
Retourne false lorsque le programme s’exécute dans le système d’exploitation sans tête, par exemple quand SSH est connecté à une machine Linux. Les navigateurs (vues web) et les répartiteurs ne peuvent pas être utilisés s’il n’existe aucune prise en charge de l’interface utilisateur. À la place, utilisez AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) ou AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>) |