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

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:

  • Una respuesta correcta contendrá la clave "access_token",

  • una respuesta de error contendrá "error" y normalmente "error_description".

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
str

De forma predeterminada, no se enviará ningún valor de símbolo del sistema, ni siquiera la cadena "none". Tendrá que especificar explícitamente un valor. Sus valores válidos son las constantes definidas en <xref:msal.Prompt>.

Valor predeterminado: None
login_hint
str

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
int

Este método bloqueará el subproceso actual. Este parámetro especifica el valor de tiempo de espera en segundos. El valor None predeterminado significa esperar indefinidamente.

Valor predeterminado: None
port
int

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 http://localhost).

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
int

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
int

OPCIONAL.

  • Si la aplicación no opta por usar el agente, no es necesario proporcionar aquí parent_window_handle .

  • Si la aplicación opta por usar el agente, parent_window_handle es necesario.

    • Si la aplicación es una aplicación de GUI que se ejecuta en Windows o en el sistema Mac, también es necesario proporcionar su identificador de ventana, de modo que la ventana de inicio de sesión aparezca en la parte superior de la ventana.

    • Si la aplicación es una aplicación de consola que se ejecuta en Windows o en el sistema Mac, puede usar un marcador de posición PublicClientApplication.CONSOLE_WINDOW_HANDLE.

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 lambda ui="xyz", **kwargs: print("A {} will be launched".format(ui)), donde ui será "explorador" o "broker". Puede usarlo para informar al usuario final de esperar una ventana emergente.

Novedad de la versión 1.20.0.

Valor predeterminado: None
auth_scheme

Puede proporcionar un msal.auth_scheme.PopAuthScheme objeto para que MSAL obtenga un token de prueba de posesión (POP).

Novedad de la versión 1.26.0.

Valor predeterminado: None

Devoluciones

Tipo Description
  • Un dict que no contiene ninguna clave "error" y normalmente contiene una clave "access_token".

  • Un dict que contiene una clave de "error", cuando se produce un error en la actualización del token.

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.

  • Una respuesta correcta contendrá la clave "user_code", entre otras

  • una respuesta de error contendrá otros pares clave-valor legibles.

Atributos

CONSOLE_WINDOW_HANDLE

CONSOLE_WINDOW_HANDLE = <object object>

DEVICE_FLOW_CORRELATION_ID

DEVICE_FLOW_CORRELATION_ID = '_correlation_id'