PublicClientApplication Clase
Igual que <xref:ClientApplication.__init__>, salvo que el client_credential parámetro permanecerá None.
Note
¿Qué es un agente y por qué usarlo?
Un agente es un componente instalado en el dispositivo.
El agente proporciona implícitamente a su dispositivo una identidad. Mediante el uso de un agente,
el dispositivo se convierte en un factor que puede satisfacer MFA (autenticación multifactor).
Este factor sería obligatorio
si el administrador de un inquilino habilita una directiva de acceso condicional (CA) correspondiente.
La presencia del agente permite Plataforma de identidad de Microsoft
para tener una mayor confianza de que los tokens se emiten en el dispositivo,
y eso es más seguro.
Una ventaja adicional del agente es,
se ejecuta como un proceso de larga duración con el sistema operativo del dispositivo,
y mantiene su propia memoria caché,
para que las aplicaciones habilitadas para el agente (incluso una CLI)
podría iniciar sesión automáticamente desde una sesión de inicio de sesión iniciada establecida anteriormente.
¿Cómo participar en el uso del agente?
Puede establecer cualquier combinación de los siguientes parámetros de participación en true:
Marca de participación
Si la aplicación se ejecutará en
La aplicación lo ha registrado como un URI de redirección de la plataforma de escritorio en Azure Portal
enable_broker_on_windows
Windows 10+
ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id
enable_broker_on_wsl
WSL
ms-appx-web://Microsoft. AAD. BrokerPlugin/your_client_id
enable_broker_on_mac
Mac con Portal de empresa instalado
msauth.com.msauth.unsignedapp://auth
enable_broker_on_linux
Linux con Intune instalado
https://login.microsoftonline.com/common/oauth2/nativeclient (DEBE estar habilitado)
Instalación de la dependencia del agente,
Por ejemplo, pip install msal[broker]>=1.33,2<.
Pruebe con acquire_token_interactive() y acquire_token_silent().
Los comportamientos de reserva de la compatibilidad con el agente de MSAL Python
MSAL producirá un error o se revertirá silenciosamente a flujos que no son de agente.
MSAL omitirá el enable_broker_... y omitir agente
en esos flujos de autenticación que se sabe que no son compatibles con broker.
Esto incluye ADFS, B2C, etc.
Para ver otros escenarios de "could-use-broker", consulte a continuación.
Errores de MSAL cuando el desarrollador de aplicaciones optó por usar el agente
pero no se instala un paquete de dependencia directa "nivel medio".
El mensaje de error guía al desarrollador de aplicaciones para declarar la dependencia correcta
msal[broker].
Aquí se produce un error porque el error es accionable para los desarrolladores de aplicaciones.
MSAL "desactiva" silenciosamente el agente y la reserva en no agente,
cuando se optó, la dependencia instalada todavía no se pudo inicializar.
Se prevé que esto ocurriría en un dispositivo cuyo sistema operativo es demasiado antiguo
o el componente de agente subyacente no está disponible de alguna manera.
No hay mucho desarrollador de aplicaciones o el usuario final puede hacer aquí.
Finalmente, la directiva de acceso condicional deberá
forzar al usuario a cambiar a otro dispositivo.
Errores de MSAL cuando se opta por el agente, se instala, se inicializa,
pero se produjo un error en las solicitudes de token posteriores.
Constructor
PublicClientApplication(client_id, client_credential=None, *, enable_broker_on_windows=None, enable_broker_on_mac=None, enable_broker_on_linux=None, enable_broker_on_wsl=None, **kwargs)
Parámetros
| Nombre | Description |
|---|---|
|
enable_broker_on_windows
Requerido
|
<xref:boolean>
Esta configuración solo es efectiva si la aplicación se ejecuta en Windows 10+. Este parámetro tiene como valor predeterminado None, lo que significa que MSAL no usará un agente. Novedades de MSAL Python 1.25.0. |
|
enable_broker_on_mac
Requerido
|
<xref:boolean>
Esta configuración solo es efectiva si la aplicación se ejecuta en Mac. Este parámetro tiene como valor predeterminado None, lo que significa que MSAL no usará un agente. Novedades de MSAL Python 1.31.0. |
|
enable_broker_on_linux
Requerido
|
<xref:boolean>
Esta configuración solo es efectiva si la aplicación se ejecuta en Linux, incluido WSL. Este parámetro tiene como valor predeterminado None, lo que significa que MSAL no usará un agente. Novedades de MSAL Python 1.33.0. |
|
enable_broker_on_wsl
Requerido
|
<xref:boolean>
Esta configuración solo es efectiva si la aplicación se ejecuta en WSL. Este parámetro tiene como valor predeterminado None, lo que significa que MSAL no usará un agente. Novedades de MSAL Python 1.33.0. |
|
client_id
Requerido
|
|
|
client_credential
|
Valor predeterminado: None
|
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
enable_broker_on_windows
|
Valor predeterminado: None
|
|
enable_broker_on_mac
|
Valor predeterminado: None
|
|
enable_broker_on_linux
|
Valor predeterminado: None
|
|
enable_broker_on_wsl
|
Valor predeterminado: None
|
Métodos
| acquire_token_by_device_flow |
Obtenga el token mediante un objeto de flujo de dispositivo, con efecto de sondeo personalizable. |
| acquire_token_interactive |
Adquirir token de forma interactiva, es decir, a través de un explorador local. Requisito previo: en Azure Portal, configure el URI de redirección de la "aplicación móvil y de escritorio" como |
| initiate_device_flow |
Inicie una instancia de Device Flow, que se usará en acquire_token_by_device_flow. |
acquire_token_by_device_flow
Obtenga el token mediante un objeto de flujo de dispositivo, con efecto de sondeo personalizable.
acquire_token_by_device_flow(flow, claims_challenge=None, **kwargs)
Parámetros
| Nombre | Description |
|---|---|
|
flow
Requerido
|
Un dict generado anteriormente por initiate_device_flow. De forma predeterminada, el efecto de sondeo de este método bloqueará el subproceso actual. Puede anular el bucle de sondeo en cualquier momento cambiando el valor de la clave "expires_at" del flujo a 0. |
|
claims_challenge
|
El parámetro claims_challenge solicita notificaciones específicas solicitadas por el proveedor de recursos en forma de una directiva de claims_challenge en el encabezado www-authenticate que se va a devolver desde el punto de conexión UserInfo o en el token de identificador o token de acceso. Es una cadena de un objeto JSON que contiene listas de notificaciones que se solicitan desde estas ubicaciones. Valor predeterminado: None
|
Devoluciones
| Tipo | Description |
|---|---|
|
Un dict que representa la respuesta json de Microsoft Entra:
|
acquire_token_interactive
Adquirir token de forma interactiva, es decir, a través de un explorador local.
Requisito previo: en Azure Portal, configure el URI de redirección de la "aplicación móvil y de escritorio" como http://localhost.
Si opta por usar el agente durante PublicClientApplication la creación, la aplicación también necesita este URI de redirección: ms-appx-web://Microsoft.AAD.BrokerPlugin/YOUR_CLIENT_ID
acquire_token_interactive(scopes, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, timeout=None, port=None, extra_scopes_to_consent=None, max_age=None, parent_window_handle=None, on_before_launching_ui=None, auth_scheme=None, **kwargs)
Parámetros
| Nombre | Description |
|---|---|
|
scopes
Requerido
|
Es una lista de cadenas que distinguen mayúsculas de minúsculas. |
|
prompt
|
De forma predeterminada, no se enviará ningún valor de símbolo del sistema, ni siquiera la cadena Valor predeterminado: None
|
|
login_hint
|
Optional. Identificador del usuario. Por lo general, un nombre principal de usuario (UPN). Valor predeterminado: None
|
|
domain_hint
|
Puede ser uno de los "consumidores" o "organizaciones" o el dominio de inquilino "contoso.com". Si se incluye, omitirá el proceso de detección basado en correo electrónico que el usuario pasa en la página de inicio de sesión, lo que conduce a una experiencia de usuario ligeramente más simplificada. Obtenga más información sobre los posibles valores disponibles en la documentación de Flujo de código de autenticación y domain_hint documento. Valor predeterminado: None
|
|
claims_challenge
|
El parámetro claims_challenge solicita notificaciones específicas solicitadas por el proveedor de recursos en forma de una directiva de claims_challenge en el encabezado www-authenticate que se va a devolver desde el punto de conexión UserInfo o en el token de identificador o token de acceso. Es una cadena de un objeto JSON que contiene listas de notificaciones que se solicitan desde estas ubicaciones. Valor predeterminado: None
|
|
timeout
|
Este método bloqueará el subproceso actual.
Este parámetro especifica el valor de tiempo de espera en segundos.
El valor Valor predeterminado: None
|
|
port
|
Puerto que se va a usar para escuchar una respuesta de autenticación entrante.
De forma predeterminada, usaremos un puerto asignado por el sistema.
(El resto del redirect_uri está codificado de forma rígida como Valor predeterminado: None
|
|
extra_scopes_to_consent
|
"Ámbitos adicionales para dar su consentimiento" es un concepto que solo está disponible en Microsoft Entra. Hace referencia a otros recursos para los que puede solicitar su consentimiento, en la misma interacción, pero para los que no obtendrá un token para en esta operación determinada. Valor predeterminado: None
|
|
max_age
|
OPCIONAL. Antigüedad máxima de autenticación. Especifica el tiempo transcurrido permitido en segundos desde la última vez que el End-User se autenticó activamente. Si el tiempo transcurrido es mayor que este valor, Plataforma de identidad de Microsoft volverá a autenticar activamente al usuario final. MSAL Python también validará automáticamente el auth_time en el token de identificador. Novedades de la versión 1.15. Valor predeterminado: None
|
|
parent_window_handle
|
OPCIONAL.
La mayoría de los scripts de Python son aplicaciones de consola. Novedad de la versión 1.20.0. Valor predeterminado: None
|
|
on_before_launching_ui
|
<xref:function>
Devolución de llamada con el formato de Novedad de la versión 1.20.0. Valor predeterminado: None
|
|
auth_scheme
|
Puede proporcionar un Novedad de la versión 1.26.0. Valor predeterminado: None
|
Devoluciones
| Tipo | Description |
|---|---|
|
initiate_device_flow
Inicie una instancia de Device Flow, que se usará en acquire_token_by_device_flow.
initiate_device_flow(scopes=None, *, claims_challenge=None, **kwargs)
Parámetros
| Nombre | Description |
|---|---|
|
scopes
|
Ámbitos solicitados para acceder a una API protegida (un recurso). Valor predeterminado: None
|
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
claims_challenge
|
Valor predeterminado: None
|
Devoluciones
| Tipo | Description |
|---|---|
|
Un dict que representa un objeto Device Flow recién creado.
|
Atributos
CONSOLE_WINDOW_HANDLE
CONSOLE_WINDOW_HANDLE = <object object>
DEVICE_FLOW_CORRELATION_ID
DEVICE_FLOW_CORRELATION_ID = '_correlation_id'