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