Lenguaje

PublicClientApplication Clase

Definición

Clase abstracta que contiene propiedades y métodos de API comunes. Para obtener más información, consulte 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
Herencia
PublicClientApplication
Implementaciones

Ejemplos

Este es un ejemplo de cómo usar PublicClientApplication con un agente de autenticación y el almacenamiento en caché.

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

Comentarios

A diferencia ConfidentialClientApplicationde , los clientes públicos no pueden contener secretos de tiempo de configuración y, como resultado, no tienen ningún secreto de cliente.

La biblioteca determina automáticamente el URI de redirección necesario para la autenticación interactiva. No es necesario pasar explícitamente en el constructor. Según la estrategia de autenticación (por ejemplo, a través del Administrador de autenticación web, la aplicación de autenticación, el explorador, etc.), MSAL usará diferentes URI de redirección. Los URI de redirección siempre deben configurarse en la hoja Azure Active Directory del Azure Portal.

Propiedades

Nombre Description
AppConfig

Detalles sobre la configuración de ClientApplication con fines de depuración.

(Heredado de ClientApplicationBase)
Authority

Obtiene la dirección URL de la autoridad o el servicio de token de seguridad (STS) de la que MSAL.NET adquirirá tokens de seguridad El valor devuelto de esta propiedad es el valor proporcionado por el desarrollador en el constructor de la aplicación o, de lo contrario, el valor del Microsoft.Identity.Client.ApplicationBase.DefaultAuthority miembro estático (es https://login.microsoftonline.com/common/decir, ).

(Heredado de ClientApplicationBase)
IsSystemWebViewAvailable

Devuelve true si MSAL puede usar un explorador del sistema.

OperatingSystemAccount

Valor de cuenta especial que indica que se debe usar la cuenta del sistema operativo actual para registrar al usuario. No todos los sistemas operativos y los flujos de autenticación admiten este concepto, en cuyo caso la llamada AcquireTokenSilent(IEnumerable<String>, IAccount) producirá una MsalUiRequiredExceptionexcepción .

UserTokenCache

Caché de tokens de usuario. Contiene tokens de acceso, tokens de identificador y tokens de actualización para las cuentas. Se usa y actualiza silenciosamente si es necesario al llamar a AcquireTokenSilent(IEnumerable<String>, IAccount) o a una de las invalidaciones de AcquireTokenSilent(IEnumerable<String>, IAccount). Se actualiza mediante cada método AcquireTokenXXX, con la excepción de que solo usa la caché de AcquireTokenForClient aplicaciones (consulte IConfidentialClientApplication).

(Heredado de ClientApplicationBase)

Métodos

Nombre Description
AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Solicitud no interactiva para adquirir un token de seguridad para el usuario que ha iniciado sesión en Windows, a través de la autenticación integrada de Windows. Consulte https://aka.ms/msal-net-iwa. La cuenta usada en estas invalidaciones se extrae del sistema operativo como el nombre principal de usuario actual.

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

Solicitud no interactiva para adquirir un token de seguridad de la entidad, a través de la autenticación de nombre de usuario y contraseña. Consulte https://aka.ms/msal-net-up para obtener más información.

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

Solicitud no interactiva para adquirir un token de seguridad de la entidad, a través de la autenticación de nombre de usuario y contraseña. Consulte https://aka.ms/msal-net-up para obtener más información.

AcquireTokenInteractive(IEnumerable<String>)

Solicitud interactiva para adquirir un token para los ámbitos especificados. La ventana interactiva se asociará a la ventana especificada. El usuario tendrá que seleccionar una cuenta.

AcquireTokenSilent(IEnumerable<String>, IAccount)

[API V3] Intenta adquirir un token de acceso para desde account la caché de tokens de usuario. Consulte https://aka.ms/msal-net-acquiretokensilent para obtener más información.

(Heredado de ClientApplicationBase)
AcquireTokenSilent(IEnumerable<String>, String)

[API V3] Intenta adquirir un token de acceso para que IAccount tenga la Username coincidencia con la especificada loginHint, desde la caché del token de usuario. Consulte https://aka.ms/msal-net-acquiretokensilent para obtener más información.

(Heredado de ClientApplicationBase)
AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>)

Adquiere un token de seguridad en un dispositivo sin un explorador web al permitir que el usuario se autentique en otro dispositivo. Esto se realiza en dos pasos:

  • El método adquiere primero un código de dispositivo de la autoridad y lo devuelve al autor de la llamada a través de deviceCodeResultCallback. Esta devolución de llamada se encarga de interactuar con el usuario para dirigirla para autenticarse (en una dirección URL específica, con un código).
  • A continuación, el método continúa sondeando el token de seguridad que el usuario concede tras el inicio de sesión correcto en función de la información del código del dispositivo.
Vea https://aka.ms/msal-device-code-flow..
GetAccountAsync(String, CancellationToken)

Obtenga por IAccount su identificador entre las cuentas disponibles en la caché de tokens.

(Heredado de ClientApplicationBase)
GetAccountAsync(String)

Obtenga por IAccount su identificador entre las cuentas disponibles en la caché de tokens.

(Heredado de ClientApplicationBase)
GetAccountsAsync()

Devuelve todas las cuentas disponibles en la caché de tokens de usuario de la aplicación.

(Heredado de ClientApplicationBase)
GetAccountsAsync(CancellationToken)

Devuelve todas las cuentas disponibles en la caché de tokens de usuario de la aplicación.

(Heredado de ClientApplicationBase)
GetAccountsAsync(String, CancellationToken)

Obtenga la IAccount recopilación por su identificador entre las cuentas disponibles en la caché de tokens, en función del flujo de usuario. Esto es para Azure escenarios de AD B2C.

(Heredado de ClientApplicationBase)
GetAccountsAsync(String)

Obtenga la IAccount recopilación por su identificador entre las cuentas disponibles en la caché de tokens, en función del flujo de usuario. Esto es para Azure escenarios de AD B2C.

(Heredado de ClientApplicationBase)
IsBrokerAvailable()

Devuelve true si se puede usar un agente de autenticación. Este método solo es necesario para escenarios móviles que admiten la administración de aplicaciones móviles (MAM). En otros casos, use WithBroker, que revertirá para usar un explorador si un agente de autenticación no está disponible.

IsEmbeddedWebViewAvailable()

Devuelve true si MSAL puede usar una vista web incrustada (explorador web).

IsProofOfPossessionSupportedByClient()

Se usa para determinar si el agente disponible actualmente puede realizar la prueba de posesión.

IsUserInteractive()

Devuelve false cuando la aplicación se ejecuta en modo sin encabezado (por ejemplo, cuando SSH-d en una máquina Linux). Los exploradores (vistas web) y los agentes no se pueden usar si no hay compatibilidad con la interfaz de usuario. Para esos escenarios, use AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>).

RemoveAsync(IAccount, CancellationToken)

Quita todos los tokens de la memoria caché de la cuenta especificada.

(Heredado de ClientApplicationBase)
RemoveAsync(IAccount)

Quita todos los tokens de la memoria caché de la cuenta especificada.

(Heredado de ClientApplicationBase)

Implementaciones de interfaz explícitas

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

Adquiere un token de acceso de un token de actualización existente y lo almacena, y el token de actualización, en la caché de tokens de usuario, donde estará disponible para más llamadas a AcquireTokenSilent. Este método se puede usar en la migración a MSAL desde ADAL v2 y en varios escenarios de integración en los que tiene un RefreshToken disponible. Consulte https://aka.ms/msal-net-migration-adal2-msal2.

Métodos de extensión

Nombre Description
IsEmbeddedWebViewAvailable(IPublicClientApplication)

Devuelve true si MSAL puede usar una vista web incrustada (explorador).

IsProofOfPossessionSupportedByClient(IPublicClientApplication)

Se usa para determinar si el agente disponible actualmente puede realizar la prueba de posesión.

IsSystemWebViewAvailable(IPublicClientApplication)

Devuelve true si MSAL puede usar un explorador del sistema.

IsUserInteractive(IPublicClientApplication)

Devuelve false cuando el programa se ejecuta en un sistema operativo sin encabezado, por ejemplo, cuando ssh-ed en una máquina Linux. Los exploradores (vistas web) y los agentes no se pueden usar si no hay compatibilidad con la interfaz de usuario. En su lugar, use AcquireTokenWithDeviceCode(IEnumerable<String>, Func<DeviceCodeResult,Task>) o AcquireTokenByIntegratedWindowsAuth(IEnumerable<String>)

Se aplica a