PublicClientApplication Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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 |
| 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 |
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 |
| AcquireTokenSilent(IEnumerable<String>, String) |
[API V3] Intenta adquirir un token de acceso para que IAccount tenga la Username coincidencia con la especificada |
| 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:
|
| 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 |
| IsEmbeddedWebViewAvailable() |
Devuelve |
| IsProofOfPossessionSupportedByClient() |
Se usa para determinar si el agente disponible actualmente puede realizar la prueba de posesión. |
| IsUserInteractive() |
Devuelve |
| 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>) |