ManagedIdentityClient Classe
Cette API encapsule plusieurs back-ends d’identité managée : machine virtuelle, App Service, Azure Automation (Runbooks), fonction Azure, service Fabric et Azure Arc.
Il fournit également la prise en charge du cache de jetons.
Note
Cloud Shell prise en charge n’est pas implémentée dans cette classe.
Depuis msal Python 1.18 en mai 2022, il a été mis en œuvre dans
<xref:PublicClientApplication.acquire_token_interactive> via le modèle d’appel
PublicClientApplication(...). acquire_token_interactive(scopes=[...], prompt="none »).
Cela est approprié, car Cloud Shell génère un jeton avec
autorisations déléguées pour l’utilisateur final qui s’est connecté au Portail Azure
(comme ce qu’un PublicClientApplication fait),
pas un jeton avec des autorisations d’application pour une application.
Créez un client d’identité managée.
Recette 1 : Codez en dur une identité managée pour votre application :
import msal, requests
client = msal.ManagedIdentityClient(
msal.UserAssignedManagedIdentity(client_id="foo"),
http_client=requests.Session(),
)
token = client.acquire_token_for_client("resource")
Recette 2 : Écrire une fois, s’exécuter partout.
Si vous utilisez une identité managée différente sur un déploiement différent, vous pouvez utiliser une variable d’environnement (par exemple, MY_MANAGED_IDENTITY_CONFIG) pour stocker un objet blob json comme {"ManagedIdentityIdType": "ClientId", "Id": "foo"} ou {"ManagedIdentityIdType": "SystemAssigned", "Id": null}.
L’application suivante peut charger dynamiquement la configuration d’identité managée :
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")
Constructeur
ManagedIdentityClient(managed_identity: dict | ManagedIdentity | SystemAssignedManagedIdentity | UserAssignedManagedIdentity, *, http_client, token_cache=None, http_cache=None, client_capabilities: List[str] | None = None)
Paramètres
| Nom | Description |
|---|---|
|
managed_identity
Obligatoire
|
Il accepte une instance de SystemAssignedManagedIdentity ou UserAssignedManagedIdentity. Ils sont équivalents à une dictée avec une certaine forme, qui peut être chargée à partir d’un fichier de configuration JSON ou d’une var env. |
|
http_client
Obligatoire
|
Objet client http. Par exemple, vous pouvez utiliser
|
|
token_cache
Obligatoire
|
Optional. Il accepte une <xref:msal.TokenCache> instance pour stocker des jetons. Il utilise par défaut un cache de jetons en mémoire. |
|
http_cache
Obligatoire
|
Optional. Il a les mêmes caractéristiques que les
|
|
client_capabilities
Obligatoire
|
(facultatif) Autorise la configuration d’une ou plusieurs fonctionnalités clientes, par exemple ["CP1"]. La fonctionnalité cliente est destinée à informer le Plateforme d'identités Microsoft (STS) de ce que ce client est capable, afin que STS puisse décider d’activer certaines fonctionnalités. Détails de l’implémentation : la fonctionnalité cliente dans Managed Identity est relayée as-is via |
Paramètres de mot clé uniquement
| Nom | Description |
|---|---|
|
http_client
Obligatoire
|
|
|
token_cache
|
Valeur par défaut: None
|
|
http_cache
|
Valeur par défaut: None
|
|
client_capabilities
|
Valeur par défaut: None
|
Méthodes
| acquire_token_for_client |
Acquérir un jeton pour l’identité managée. Le résultat est automatiquement mis en cache. Les appels suivants effectuent automatiquement une recherche à partir du cache en premier. Note Problème connu : lorsqu’une machine virtuelle Azure n’a qu’une seule identité managée affectée par l’utilisateur, et votre application spécifie d’utiliser l’identité managée affectée par le système, Azure machine virtuelle peut toujours retourner un jeton pour votre identité affectée par l’utilisateur. Il s’agit d’un comportement côté service qui ne peut pas être modifié par cette bibliothèque. |
acquire_token_for_client
Acquérir un jeton pour l’identité managée.
Le résultat est automatiquement mis en cache. Les appels suivants effectuent automatiquement une recherche à partir du cache en premier.
Note
Problème connu : lorsqu’une machine virtuelle Azure n’a qu’une seule identité managée affectée par l’utilisateur,
et votre application spécifie d’utiliser l’identité managée affectée par le système,
Azure machine virtuelle peut toujours retourner un jeton pour votre identité affectée par l’utilisateur.
Il s’agit d’un comportement côté service qui ne peut pas être modifié par cette bibliothèque.
acquire_token_for_client(*, resource: str, claims_challenge: str | None = None)
Paramètres
| Nom | Description |
|---|---|
|
resource
Obligatoire
|
Ressource pour laquelle le jeton est acquis. |
|
claims_challenge
Obligatoire
|
Optional. Il s’agit d’une représentation sous forme de chaîne d’un objet JSON (qui contient des listes de revendications demandées). L’administrateur client peut choisir de révoquer tous les jetons d’identité managée, puis une demande de revendications est retournée par la ressource cible, en tant que directive claims_challenge dans l’en-tête www-authenticate , même si le développeur de l’application n’a pas choisi la fonctionnalité cliente « CP1 ». Lors de la réception d’un claims_challenge, MSAL tente d’acquérir un nouveau jeton. |
Paramètres de mot clé uniquement
| Nom | Description |
|---|---|
|
resource
Obligatoire
|
|
|
claims_challenge
|
Valeur par défaut: None
|