Langage

PublicClientApplication Classe

Définition

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
PublicClientApplication
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 https://login.microsoftonline.com/common/dit)

(Hérité de ClientApplicationBase)
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 AcquireTokenForClient (voir IConfidentialClientApplication).

(Hérité de ClientApplicationBase)

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 account cache de jetons utilisateur. Pour plus d’informations, voir https://aka.ms/msal-net-acquiretokensilent

(Hérité de ClientApplicationBase)
AcquireTokenSilent(IEnumerable<String>, String)

[API V3] Tente d’acquérir un jeton d’accès pour avoir IAccount la Username correspondance donnée loginHint, à partir du cache de jetons utilisateur. Pour plus d’informations, voir https://aka.ms/msal-net-acquiretokensilent

(Hérité de ClientApplicationBase)
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 :

  • La méthode acquiert d’abord un code d’appareil auprès de l’autorité et le retourne à l’appelant via le deviceCodeResultCallback. Ce rappel s’occupe d’interagir avec l’utilisateur pour les diriger vers l’authentification (à une URL spécifique, avec un code)
  • La méthode procède ensuite à l’interrogation du jeton de sécurité qui est accordé lors de la connexion réussie par l’utilisateur en fonction des informations de code de l’appareil
Voir https://aka.ms/msal-device-code-flow.
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 true si un répartiteur d’authentification peut être utilisé. Cette méthode est uniquement nécessaire pour les scénarios mobiles qui prennent en charge la gestion des applications mobiles (GAM). Dans d’autres cas, utilisez WithBroker, qui revient à utiliser un navigateur si un répartiteur d’authentification n’est pas disponible.

IsEmbeddedWebViewAvailable()

Retourne true si MSAL peut utiliser une vue web incorporée (navigateur web).

IsProofOfPossessionSupportedByClient()

Utilisé pour déterminer si le répartiteur actuellement disponible est en mesure d’effectuer une preuve de possession.

IsUserInteractive()

Retourne false lorsque l’application s’exécute en mode sans tête (par exemple, quand SSH-d dans 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. Pour ces scénarios, utilisez AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>).

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>)

S’applique à