ManagedIdentityClient Clase

Esta API encapsula varios back-ends de identidad administrada: VM, App Service, Azure Automation (Runbooks), Azure Function, Service Fabric y Azure Arc.

También proporciona compatibilidad con la caché de tokens.

Note

Cloud Shell compatibilidad no se implementa en esta clase.

Desde MSAL Python 1.18 en mayo de 2022, se ha implementado en

<xref:PublicClientApplication.acquire_token_interactive> a través del patrón de llamada

PublicClientApplication(...). acquire_token_interactive(scopes=[...], prompt="none").

Esto es adecuado, ya que Cloud Shell produce un token con

permisos delegados para el usuario final que ha iniciado sesión en el Azure Portal

(como lo que hace publicClientApplication),

no un token con permisos de aplicación para una aplicación.

Cree un cliente de identidad administrada.

Receta 1: Codificación rígida de una identidad administrada para la aplicación:


   import msal, requests
   client = msal.ManagedIdentityClient(
       msal.UserAssignedManagedIdentity(client_id="foo"),
       http_client=requests.Session(),
       )
   token = client.acquire_token_for_client("resource")

Receta 2: Escribir una vez, correr por todas partes. Si usa una identidad administrada diferente en una implementación diferente, puede usar una variable de entorno (por ejemplo, MY_MANAGED_IDENTITY_CONFIG) para almacenar un blob json como {"ManagedIdentityIdType": "ClientId", "Id": "foo"} o {"ManagedIdentityIdType": "SystemAssigned", "Id": null}. La aplicación siguiente puede cargar la configuración de identidad administrada dinámicamente:


   import json, os, msal, requests
   config = os.getenv("MY_MANAGED_IDENTITY_CONFIG")
   assert config, "An ENV VAR with value should exist"
   client = msal.ManagedIdentityClient(
       json.loads(config),
       http_client=requests.Session(),
       )
   token = client.acquire_token_for_client("resource")

Constructor

ManagedIdentityClient(managed_identity: dict | ManagedIdentity | SystemAssignedManagedIdentity | UserAssignedManagedIdentity, *, http_client, token_cache=None, http_cache=None, client_capabilities: List[str] | None = None)

Parámetros

Nombre Description
managed_identity
Requerido

Acepta una instancia de SystemAssignedManagedIdentity o UserAssignedManagedIdentity. Son equivalentes a un dict con una determinada forma, que se puede cargar desde un archivo de configuración JSON o una variable env.

http_client
Requerido

Objeto de cliente http. Por ejemplo, puede usar requests.Session(), opcionalmente con el comportamiento de retroceso exponencial mostrado en esta receta:


   import msal, requests
   from requests.adapters import HTTPAdapter, Retry
   s = requests.Session()
   retries = Retry(total=3, backoff_factor=0.1, status_forcelist=[
       429, 500, 501, 502, 503, 504])
   s.mount('https://', HTTPAdapter(max_retries=retries))
   managed_identity = ...
   client = msal.ManagedIdentityClient(managed_identity, http_client=s)
token_cache
Requerido

Optional. Acepta una <xref:msal.TokenCache> instancia de para almacenar tokens. Usará una caché de tokens en memoria de forma predeterminada.

http_cache
Requerido

Optional. Tiene las mismas características que la

:p aramref:msal.ClientApplication.http_cache<<.

client_capabilities
Requerido

(opcional) Permite la configuración de una o varias funcionalidades de cliente, por ejemplo, ["CP1"].

La funcionalidad de cliente está pensada para informar al Plataforma de identidad de Microsoft (STS) de lo que este cliente es capaz de, por lo que STS puede decidir activar determinadas características.

Detalles de implementación: la funcionalidad del cliente en identidad administrada se retransmite as-is a través xms_cc del parámetro en la conexión.

Parámetros de palabra clave únicamente

Nombre Description
http_client
Requerido
token_cache
Valor predeterminado: None
http_cache
Valor predeterminado: None
client_capabilities
Valor predeterminado: None

Métodos

acquire_token_for_client

Adquiera el token para la identidad administrada.

El resultado se almacenará automáticamente en caché. Las llamadas posteriores buscarán automáticamente desde la memoria caché primero.

Note

Problema conocido: cuando una máquina virtual de Azure solo tiene una identidad administrada asignada por el usuario,

y la aplicación especifica que se use la identidad administrada asignada por el sistema,

Azure máquina virtual puede seguir devolviendo un token para la identidad asignada por el usuario.

Este es un comportamiento del lado del servicio que esta biblioteca no puede cambiar.

documentación de máquinas virtuales de Azure

acquire_token_for_client

Adquiera el token para la identidad administrada.

El resultado se almacenará automáticamente en caché. Las llamadas posteriores buscarán automáticamente desde la memoria caché primero.

Note

Problema conocido: cuando una máquina virtual de Azure solo tiene una identidad administrada asignada por el usuario,

y la aplicación especifica que se use la identidad administrada asignada por el sistema,

Azure máquina virtual puede seguir devolviendo un token para la identidad asignada por el usuario.

Este es un comportamiento del lado del servicio que esta biblioteca no puede cambiar.

documentación de máquinas virtuales de Azure

acquire_token_for_client(*, resource: str, claims_challenge: str | None = None)

Parámetros

Nombre Description
resource
Requerido

Recurso para el que se adquiere el token.

claims_challenge
Requerido

Optional. Es una representación de cadena de un objeto JSON (que contiene listas de notificaciones que se solicitan).

El administrador de inquilinos puede optar por revocar todos los tokens de identidad administrada y, a continuación, el recurso de destino devolverá un desafío de notificaciones , como una directiva de claims_challenge en el encabezado www-authenticate , incluso si el desarrollador de aplicaciones no optó por la funcionalidad de cliente "CP1". Al recibir un claims_challenge, MSAL intentará adquirir un nuevo token.

Parámetros de palabra clave únicamente

Nombre Description
resource
Requerido
claims_challenge
Valor predeterminado: None