ClientApplication Classe

Vous n’utilisez généralement pas directement cette classe. Utilisez plutôt ses sous-classes : PublicClientApplication et ConfidentialClientApplication.

Créez une instance d’application.

Constructeur

ClientApplication(client_id, client_credential=None, authority=None, validate_authority=True, token_cache=None, http_client=None, verify=True, proxies=None, timeout=None, client_claims=None, app_name=None, app_version=None, client_capabilities=None, azure_region=None, exclude_scopes=None, http_cache=None, instance_discovery=None, allow_broker=None, enable_pii_log=None, oidc_authority=None)

Paramètres

Nom Description
client_id
Obligatoire
str

Votre application a un client_id après l’avoir inscrite sur centre d’administration Microsoft Entra.

client_credential

Pour PublicClientApplication, vous utilisez Aucun ici.

Pour ConfidentialClientApplication, il prend en charge de nombreux formats d’entrée différents pour différents scénarios.

Prise en charge à l’aide d’une clé secrète client. Il vous suffit de nourrir dans une chaîne, telle que "your client secret".

Prise en charge de l’utilisation d’un certificat au format X.509 (.pem)Deprecated car il utilise l’empreinte SHA-1,

sauf si vous utilisez toujours ADFS qui prend uniquement en charge l’empreinte numérique SHA-1. Utilisez l’option .pfx documentée plus loin dans cette page. Feed in a dict in this form :


   {
       "private_key": "...-----BEGIN PRIVATE KEY-----... in PEM format",
       "thumbprint": "An SHA-1 thumbprint such as A1B2C3D4E5F6..."
           "Changed in version 1.35.0, if thumbprint is absent"
           "and a public_certificate is present, MSAL will"
           "automatically calculate an SHA-256 thumbprint instead.",
       "passphrase": "Needed if the private_key is encrypted (Added in version 1.6.0)",
       "public_certificate": "...-----BEGIN CERTIFICATE-----...",  # Needed if you use Subject Name/Issuer auth. Added in version 0.5.0.
   }

MSAL Python nécessite un « private_key » au format PEM. Si votre certificat est au format PKCS12 (.pfx), vous pouvez le convertir au format X.509 (.pem), par openssl pkcs12 -in file.pfx -out file.pem -nodes. L'empreinte numérique est disponible dans l'inscription de votre application dans Portail Azure. Vous pouvez également calculer l’empreinte numérique. public_certificate (facultatif) est un certificat de clé publique qui sera envoyé via l’en-tête JWT « x5c ». Cela est utile lorsque vous utilisez l’authentification du nom/de l’émetteur de l’objet , qui est une approche pour faciliter la rotation des certificats. Selon les spécifications, « le certificat contenant la clé publique correspondant à la clé utilisée pour signer numériquement le JWS doit être le premier certificat. Cela PEUT être suivi de certificats supplémentaires, chaque certificat suivant étant celui utilisé pour certifier le certificat précédent. Toutefois, l’émetteur de votre certificat peut utiliser un ordre différent. Par conséquent, si votre tentative se termine par une erreur AADSTS700027 : « La valeur de signature fournie ne correspond pas à la valeur de signature attendue », vous pouvez essayer d’utiliser uniquement le certificat feuille (au format PEM/str) à la place.

Prise en charge de l’assertion brute obtenue à partir d’un autre emplacementajouté dans la version 1.13.0 :

Il peut également s’agir d’une assertion complètement pré-signée que vous avez assemblée vous-même. Transmettez simplement un conteneur contenant uniquement la clé « client_assertion », comme suit :


   {
       "client_assertion": "...a JWT with claims aud, exp, iss, jti, nbf, and sub..."
   }

La prise en charge de la lecture des certificats clients à partir de fichiers PFX Cette utilisation utilise automatiquement l’empreinte SHA-256 du certificat. Ajouté dans la version 1.29.0 :

Flux dans un dictionnaire contenant le chemin d’accès à un fichier PFX :


   {
       "private_key_pfx_path": "/path/to/your.pfx",  # Added in version 1.29.0
       "public_certificate": True,  # Only needed if you use Subject Name/Issuer auth. Added in version 1.30.0
       "passphrase": "Passphrase if the private_key is encrypted (Optional)",
   }

La commande suivante génère un fichier .pfx à partir de votre fichier .key et .pem :


   openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.pem

L’authentification de l’émetteur/nom de l’objet est une approche permettant de faciliter la rotation des certificats. Si votre fichier .pfx contient à la fois la clé privée et le certificat public, vous pouvez opter pour l’authentification de l’objet/émetteur en définissant « public_certificate » sur True.

Valeur par défaut: None
client_claims

Ajouté dans la version 0.5.0 : il s’agit d’un dictionnaire de revendications supplémentaires qui seraient signées par cette ConfidentialClientApplication clé privée. Par exemple, vous pouvez utiliser {"client_ip » : « x.x.x.x"}. Vous pouvez également remplacer l’une des revendications par défaut suivantes :


   {
       "aud": the_token_endpoint,
       "iss": self.client_id,
       "sub": same_as_issuer,
       "exp": now + 10_min,
       "iat": now,
       "jti": a_random_uuid
   }
Valeur par défaut: None
authority
str

URL qui identifie une autorité de jeton. Il doit s’agir du format https://login.microsoftonline.com/your_tenant Par défaut, nous allons utiliser https://login.microsoftonline.com/common

Modifié dans la version 1.17 : vous pouvez également utiliser une constante prédéfinie et un générateur comme suit :


   from msal.authority import (
       AuthorityBuilder,
       AZURE_US_GOVERNMENT, AZURE_CHINA, AZURE_PUBLIC)
   my_authority = AuthorityBuilder(AZURE_PUBLIC, "contoso.onmicrosoft.com")
   # Now you get an equivalent of
   # "https://login.microsoftonline.com/contoso.onmicrosoft.com"

   # You can feed such an authority to msal's ClientApplication
   from msal import PublicClientApplication
   app = PublicClientApplication("my_client_id", authority=my_authority, ...)
Valeur par défaut: None
validate_authority

(facultatif) Active ou désactive la validation de l’autorité. Ce paramètre a la valeur true par défaut.

Valeur par défaut: True
token_cache

Définit le cache de jeton utilisé par cette instance ClientApplication. Par défaut, un cache en mémoire est créé et utilisé.

Valeur par défaut: None
http_client

(facultatif) Votre implémentation de la classe abstraite HttpClient <msal.oauth2cli.http.http_client> Valeurs par défaut pour une instance de session de requêtes. Étant donné que MSAL 1.11.0, la session par défaut est configurée pour tenter une nouvelle tentative lors de l’erreur de connexion. Si vous fournissez votre propre http_client, il s’agit du devoir de votre http_client de décider s’il faut effectuer une nouvelle tentative.

Valeur par défaut: None
verify

(facultatif) Il sera transmis au paramètre de vérification dans la bibliothèque de demandes sous-jacentes . Cela ne s’applique pas si vous avez choisi de passer votre propre client Http

Valeur par défaut: True
proxies

(facultatif) Elle sera transmise au paramètre proxy dans la bibliothèque de demandes sous-jacentes . Cela ne s’applique pas si vous avez choisi de passer votre propre client Http

Valeur par défaut: None
timeout

(facultatif) Il sera passé au paramètre de délai d’expiration dans la bibliothèque de demandes sous-jacentes Ceci ne s’applique pas si vous avez choisi de passer votre propre client Http

Valeur par défaut: None
app_name

(facultatif) Vous pouvez fournir le nom de votre application à des fins de télémétrie Microsoft. La valeur par défaut est None, ce qui signifie qu’elle n’est pas transmise à Microsoft.

Valeur par défaut: None
app_version

(facultatif) Vous pouvez fournir la version de votre application à des fins de télémétrie Microsoft. La valeur par défaut est None, ce qui signifie qu’elle n’est pas transmise à Microsoft.

Valeur par défaut: None
client_capabilities

(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. Par exemple, si le client est capable de gérer la demande de revendications, STS peut émettre des jetons d’accès d’évaluation continue d’accès (CAE) aux ressources, sachant que lorsque la ressource émet un défi de revendications , le client pourra gérer ces défis.

Détails de l’implémentation : la fonctionnalité cliente est implémentée à l’aide du paramètre « claims » sur le câble, pour le moment. MSAL les combine en paramètre de revendications que vous fournirez ultérieurement via l’une des demandes d’acquisition de jeton.

Valeur par défaut: None
azure_region
str

(facultatif) Indique à MSAL d’utiliser le service de jeton régional Entra. Cette fonctionnalité héritée est disponible uniquement pour les applications internes. Seul acquire_token_for_client() est pris en charge.

Prend en charge 4 valeurs :

  1. azure_region=None - Cette valeur par défaut signifie qu’aucune région n’est configurée. MSAL utilise la région définie dans env var MSAL_FORCE_REGION.

  2. azure_region="some_region" : signifie que la région spécifiée est utilisée.

  3. azure_region=True : signifie que MSAL tente de détecter automatiquement la région. Cela n’est pas recommandé.

  4. azure_region=False : signifie que MSAL n’utilise aucune région.

Note

La découverte automatique de région a été testée sur les machines virtuelles et sur Azure Functions. Il n’est pas fiable.

Les applications utilisant cette option doivent configurer un délai d’attente court.

Pour plus d’informations et pour les valeurs de la chaîne de région

Voir https://learn.microsoft.com/entra/msal/dotnet/resources/region-discovery-troubleshooting

Nouveautés de la version 1.12.0.

Valeur par défaut: None
exclude_scopes

(facultatif) Les codes durs MSAL historiquement offline_access étendue, ce qui permettrait à votre application d’avoir un accès prolongé aux données de l’utilisateur. Si cela n’est pas nécessaire ou indésirable pour votre application, vous pouvez maintenant utiliser ce paramètre pour fournir une liste d’exclusions d’étendues, par exclude_scopes = ["offline_access"]exemple .

Valeur par défaut: None
http_cache

MSAL a longtemps mis en cache des jetons dans le token_cache. Récemment, MSAL a également introduit un concept de http_cache, en mettant automatiquement en cache une quantité finie de réponses http non-jetons, de sorte que les réponses http de longue duréePublicClientApplication et seraient plus performantes et ConfidentialClientApplication réactives dans certaines situations.

Ce http_cache paramètre accepte n’importe quel objet de type dicté. S’il n’est pas fourni, MSAL utilise une dictée en mémoire.

Si votre application est une application en ligne de commande (CLI), vous souhaitez conserver votre http_cache entre différentes exécutions CLI. Le format du fichier persistant peut changer en raison, mais pas limité au protocole instable, de sorte que votre implémentation tolérera des erreurs de chargement inattendues. La recette suivante montre un moyen de le faire :


   # Just add the following lines at the beginning of your CLI script
   import sys, atexit, pickle, logging
   http_cache_filename = sys.argv[0] + ".http_cache"
   try:
       with open(http_cache_filename, "rb") as f:
           persisted_http_cache = pickle.load(f)  # Take a snapshot
   except (
           FileNotFoundError,  # Or IOError in Python 2
           pickle.UnpicklingError,  # A corrupted http cache file
           AttributeError,  # Cache created by a different version of MSAL
           ):
       persisted_http_cache = {}  # Recover by starting afresh
   except:  # Unexpected exceptions
       logging.exception("You may want to debug this")
       persisted_http_cache = {}  # Recover by starting afresh
   atexit.register(lambda: pickle.dump(
       # When exit, flush it back to the file.
       # It may occasionally overwrite another process's concurrent write,
       # but that is fine. Subsequent runs will reach eventual consistency.
       persisted_http_cache, open(http_cache_file, "wb")))

   # And then you can implement your app as you normally would
   app = msal.PublicClientApplication(
       "your_client_id",
       ...,
       http_cache=persisted_http_cache,  # Utilize persisted_http_cache
       ...,
       #token_cache=...,  # You may combine the old token_cache trick
           # Please refer to token_cache recipe at
           # https://msal-python.readthedocs.io/en/latest/#msal.SerializableTokenCache
       )
   app.acquire_token_interactive(["your", "scope"], ...)

Le contenu à l’intérieur http_cache est bon marché pour obtenir. Il n’est pas nécessaire de les partager entre différentes applications.

Le contenu à l’intérieur http_cache ne contiendra pas de jetons ni d’informations d’identification personnelle (PII). Le chiffrement n’est pas nécessaire.

Nouveautés de la version 1.16.0.

Valeur par défaut: None
instance_discovery
<xref:boolean>

Historiquement, MSAL se connecterait à un point de terminaison central situé à https://login.microsoftonline.com l’acquisition de certaines métadonnées, en particulier lorsque vous utilisez une autorité inconnue. Ce comportement est appelé Découverte d’instances.

Ce paramètre est défini par défaut sur None, ce qui active la découverte d’instances.

Si vous connaissez certaines autorités que vous autorisez MSAL à utiliser avec as-is, sans impliquer de découverte d’instance, le modèle recommandé est :


   known_authorities = frozenset([  # Treat your known authorities as const
       "https://contoso.com/adfs", "https://login.azs/foo"])
   ...
   authority = "https://contoso.com/adfs"  # Assuming your app will use this
   app1 = PublicClientApplication(
       "client_id",
       authority=authority,
       # Conditionally disable Instance Discovery for known authorities
       instance_discovery=authority not in known_authorities,
       )

Si vous ne connaissez pas certaines autorités au préalable, mais souhaitez toujours que MSAL accepte toute autorité que vous fournirez, vous pouvez utiliser un False pour désactiver inconditionnellement la découverte d’instances.

Nouveautés de la version 1.19.0.

Valeur par défaut: None
allow_broker
<xref:boolean>

Déconseillé. Utilisez plutôt enable_broker_on_windows.

Valeur par défaut: None
enable_pii_log
<xref:boolean>

Lorsqu’ils sont activés, les journaux d’activité peuvent inclure des informations d’identification personnelles (informations d’identification personnelles). Cela peut être utile pour résoudre les problèmes de comportement des répartiteurs. Le comportement par défaut est False.

Nouveautés de la version 1.24.0.

Valeur par défaut: None
oidc_authority
str

Ajouté dans la version 1.28.0 : il s’agit d’une URL qui identifie une autorité OpenID Connect (OIDC) du format https://contoso.com/tenant. MSAL ajoute .well-known/openid-configuration » à l’autorité et récupère les métadonnées OIDC à partir de là pour déterminer les points de terminaison.

Remarque : Le répartiteur ne sera pas utilisé pour l’autorité OIDC.

Valeur par défaut: None

Méthodes

acquire_token_by_auth_code_flow

Validez la réponse d’authentification en cours de redirection et obtenez des jetons.

Il fournit automatiquement une protection nonce.

acquire_token_by_authorization_code

La deuxième moitié de l’octroi de code d’autorisation.

acquire_token_by_refresh_token

Acquérir des jetons basés sur un jeton d’actualisation (RT) obtenu à partir d’un autre emplacement.

Vous utilisez cette méthode uniquement lorsque vous avez d’anciens RT d’ailleurs et que vous souhaitez maintenant les migrer vers MSAL. L’appel de cette méthode entraîne le stockage automatique de nouveaux jetons dans MSAL.

Vous n’avez pas besoin d’utiliser cette méthode si vous utilisez déjà MSAL. MSAL gère automatiquement RT à l’intérieur de son cache de jetons, et un jeton d’accès peut être récupéré lorsque vous appelez acquire_token_silent.

acquire_token_by_username_password

Obtient un jeton pour une ressource donnée via les informations d’identification de l’utilisateur.

Consultez cette page pour connaître les contraintes du flux de mot de passe du nom d’utilisateur. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[Déconseillé] Cette API est déconseillée pour les flux de clients publics et sera supprimée dans une prochaine version. Utilisez plutôt un flux plus sécurisé. Guide de migration : https://aka.ms/msal-ropc-migration

acquire_token_silent

Acquérir un jeton d’accès pour un compte donné, sans interaction utilisateur.

Il a les mêmes paramètres que le acquire_token_silent_with_error. La différence est le comportement de la valeur de retour. Cette méthode combine l’erreur vide et d’actualisation du cache en une valeur de retour, None. Si votre application ne s’intéresse pas à l’erreur d’actualisation exacte du jeton lors de la recherche du cache de jetons, cette méthode est plus facile et recommandée.

acquire_token_silent_with_error

Acquérir un jeton d’accès pour un compte donné, sans interaction utilisateur.

Elle est effectuée soit en recherchant un jeton d’accès valide à partir du cache, soit en recherchant un jeton d’actualisation valide à partir du cache, puis en l’utilisant automatiquement pour échanger un nouveau jeton d’accès.

Cette méthode différencie le cache vide de l’erreur d’actualisation du jeton. Si votre application s’occupe de l’erreur d’actualisation exacte du jeton lors de la recherche du cache de jetons, cette méthode convient. Sinon, l’autre méthode acquire_token_silent est recommandée.

get_accounts

Obtenez la liste des comptes qui se connectaient précédemment, c’est-à-dire qui existent dans le cache.

Un compte peut être utilisé ultérieurement pour acquire_token_silent rechercher ses jetons.

get_authorization_request_url

Construit une URL pour vous permettre de démarrer une octroi de code d’autorisation.

initiate_auth_code_flow

Lancez un flux de code d’authentification.

Plus tard, lorsque la réponse atteint votre redirect_uri, vous pouvez utiliser acquire_token_by_auth_code_flow pour terminer l’authentification/autorisation.

is_pop_supported

Retourne True si ce client prend en charge le jeton d’accès de preuve de possession.

remove_account

Me déconnecter et m’oublier du cache de jetons

acquire_token_by_auth_code_flow

Validez la réponse d’authentification en cours de redirection et obtenez des jetons.

Il fournit automatiquement une protection nonce.

acquire_token_by_auth_code_flow(auth_code_flow, auth_response, scopes=None, **kwargs)

Paramètres

Nom Description
auth_code_flow
Obligatoire

Le même dicté retourné par initiate_auth_code_flow.

auth_response
Obligatoire

dictée de la chaîne de requête reçue du serveur d’authentification.

scopes

Étendues demandées pour accéder à une API protégée (une ressource).

La plupart du temps, vous pouvez le laisser vide.

Si vous avez demandé le consentement de l’utilisateur pour plusieurs ressources, vous devez fournir ici un sous-ensemble de ce que vous avez requis dans initiate_auth_code_flow.

OAuth2 a été conçu principalement pour les services singleton, où les jetons sont toujours destinés à la même ressource et les seules modifications se trouvent dans les étendues. Dans Microsoft Entra, les jetons peuvent être émis pour plusieurs ressources tierces. Vous pouvez demander le code d’autorisation pour plusieurs ressources, mais lorsque vous l’échangez, le jeton est pour un seul destinataire prévu, appelé audience. Par conséquent, le développeur doit spécifier une étendue afin que nous puissions restreindre le jeton à émettre pour l’audience correspondante.

Valeur par défaut: None

Retours

Type Description
  • Une dictée contenant « access_token » et/ou « id_token », entre autres, dépend de l’étendue utilisée. (Voir https://tools.ietf.org/html/rfc6749#section-5.1)

  • dictée contenant « error », éventuellement « error_description », « error_uri ». (Il s’agit de ceci ou cela)

  • La plupart des erreurs de données côté client entraînent une exception ValueError. Ainsi, le modèle d’utilisation peut être sans détails de protocole :

    
       def authorize():  # A controller in a web app
           try:
               result = msal_app.acquire_token_by_auth_code_flow(
                   session.get("flow", {}), request.args)
               if "error" in result:
                   return render_template("error.html", result)
               use(result)  # Token(s) are available in result and cache
           except ValueError:  # Usually caused by CSRF
               pass  # Simply ignore them
           return redirect(url_for("index"))
    

acquire_token_by_authorization_code

La deuxième moitié de l’octroi de code d’autorisation.

acquire_token_by_authorization_code(code, scopes, redirect_uri=None, nonce=None, claims_challenge=None, **kwargs)

Paramètres

Nom Description
code
Obligatoire

Code d’autorisation retourné par le serveur d’autorisation.

scopes
Obligatoire

(Obligatoire) Étendues demandées pour accéder à une API protégée (une ressource).

Si vous avez demandé le consentement de l’utilisateur pour plusieurs ressources, vous souhaiterez généralement fournir un sous-ensemble de ce que vous avez requis dans AuthCode.

OAuth2 a été conçu principalement pour les services singleton, où les jetons sont toujours destinés à la même ressource et les seules modifications se trouvent dans les étendues. Dans Microsoft Entra, les jetons peuvent être émis pour plusieurs ressources tierces. Vous pouvez demander le code d’autorisation pour plusieurs ressources, mais lorsque vous l’échangez, le jeton est pour un seul destinataire prévu, appelé audience. Par conséquent, le développeur doit spécifier une étendue afin que nous puissions restreindre le jeton à émettre pour l’audience correspondante.

nonce

Si vous avez fourni un nonce lors de l’appel get_authorization_request_url, le même nonce doit également être fourni ici, afin que nous le validions. Une exception est levée si la nonce dans les incompatibilités de jeton d’ID.

Valeur par défaut: None
claims_challenge

Le paramètre claims_challenge demande des revendications spécifiques demandées par le fournisseur de ressources sous la forme d’une directive claims_challenge dans l’en-tête www-authenticate à retourner à partir du point de terminaison UserInfo et/ou dans le jeton d’ID et/ou le jeton d’accès. Il s’agit d’une chaîne d’un objet JSON qui contient des listes de revendications demandées à partir de ces emplacements.

Valeur par défaut: None
redirect_uri
Valeur par défaut: None

Retours

Type Description

dictée représentant la réponse json de Microsoft Entra :

  • Une réponse réussie contient la clé « access_token »,

  • une réponse d’erreur contient « error » et généralement « error_description ».

acquire_token_by_refresh_token

Acquérir des jetons basés sur un jeton d’actualisation (RT) obtenu à partir d’un autre emplacement.

Vous utilisez cette méthode uniquement lorsque vous avez d’anciens RT d’ailleurs et que vous souhaitez maintenant les migrer vers MSAL. L’appel de cette méthode entraîne le stockage automatique de nouveaux jetons dans MSAL.

Vous n’avez pas besoin d’utiliser cette méthode si vous utilisez déjà MSAL. MSAL gère automatiquement RT à l’intérieur de son cache de jetons, et un jeton d’accès peut être récupéré lorsque vous appelez acquire_token_silent.

acquire_token_by_refresh_token(refresh_token, scopes, **kwargs)

Paramètres

Nom Description
refresh_token
Obligatoire
str

Ancien jeton d’actualisation, sous forme de chaîne.

scopes
Obligatoire

Les étendues sont associées à cet ancien rt. Chaque étendue doit être au format Plateforme d'identités Microsoft (v2). Consultez les étendues et non les ressources.

Retours

Type Description
  • Un dict contient « error » et d’autres clés, lorsque l’erreur s’est produite.

  • Un dict ne contient aucune clé « erreur » signifie que la migration a réussi.

acquire_token_by_username_password

Obtient un jeton pour une ressource donnée via les informations d’identification de l’utilisateur.

Consultez cette page pour connaître les contraintes du flux de mot de passe du nom d’utilisateur. https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication

[Déconseillé] Cette API est déconseillée pour les flux de clients publics et sera supprimée dans une prochaine version. Utilisez plutôt un flux plus sécurisé. Guide de migration : https://aka.ms/msal-ropc-migration

acquire_token_by_username_password(username, password, scopes, claims_challenge=None, auth_scheme=None, **kwargs)

Paramètres

Nom Description
username
Obligatoire
str

En règle générale, un UPN sous la forme d’une adresse e-mail.

password
Obligatoire
str

Mot de passe.

scopes
Obligatoire

Étendues demandées pour accéder à une API protégée (une ressource).

claims_challenge

Le paramètre claims_challenge demande des revendications spécifiques demandées par le fournisseur de ressources sous la forme d’une directive claims_challenge dans l’en-tête www-authenticate à retourner à partir du point de terminaison UserInfo et/ou dans le jeton d’ID et/ou le jeton d’accès. Il s’agit d’une chaîne d’un objet JSON qui contient des listes de revendications demandées à partir de ces emplacements.

Valeur par défaut: None
auth_scheme

Vous pouvez fournir un msal.auth_scheme.PopAuthScheme objet afin que MSAL obtienne un jeton POP (Proof-of-Possession) pour vous.

Nouveautés de la version 1.26.0.

Valeur par défaut: None

Retours

Type Description

dictée représentant la réponse json de Microsoft Entra :

  • Une réponse réussie contient la clé « access_token »,

  • une réponse d’erreur contient « error » et généralement « error_description ».

acquire_token_silent

Acquérir un jeton d’accès pour un compte donné, sans interaction utilisateur.

Il a les mêmes paramètres que le acquire_token_silent_with_error. La différence est le comportement de la valeur de retour. Cette méthode combine l’erreur vide et d’actualisation du cache en une valeur de retour, None. Si votre application ne s’intéresse pas à l’erreur d’actualisation exacte du jeton lors de la recherche du cache de jetons, cette méthode est plus facile et recommandée.

acquire_token_silent(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)

Paramètres

Nom Description
scopes
Obligatoire
account
Obligatoire
authority
Valeur par défaut: None
force_refresh
Valeur par défaut: False
claims_challenge
Valeur par défaut: None
auth_scheme
Valeur par défaut: None

Retours

Type Description
  • Une dictée ne contenant aucune clé « erreur » et contient généralement une clé « access_token », si la recherche du cache a réussi.

  • Aucune lorsque la recherche de cache ne génère pas de jeton.

acquire_token_silent_with_error

Acquérir un jeton d’accès pour un compte donné, sans interaction utilisateur.

Elle est effectuée soit en recherchant un jeton d’accès valide à partir du cache, soit en recherchant un jeton d’actualisation valide à partir du cache, puis en l’utilisant automatiquement pour échanger un nouveau jeton d’accès.

Cette méthode différencie le cache vide de l’erreur d’actualisation du jeton. Si votre application s’occupe de l’erreur d’actualisation exacte du jeton lors de la recherche du cache de jetons, cette méthode convient. Sinon, l’autre méthode acquire_token_silent est recommandée.

acquire_token_silent_with_error(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)

Paramètres

Nom Description
scopes
Obligatoire

(Obligatoire) Étendues demandées pour accéder à une API protégée (une ressource).

account
Obligatoire

(Obligatoire) L’un des objets de compte retournés par get_accounts. À partir de MSAL Python 1.23, une None entrée devient une NO-OP et retourne Nonetoujours .

force_refresh

Si la valeur est True, elle ignore la recherche du jeton d’accès et tente de trouver un jeton d’actualisation pour obtenir un nouveau jeton d’accès.

Valeur par défaut: False
claims_challenge

Le paramètre claims_challenge demande des revendications spécifiques demandées par le fournisseur de ressources sous la forme d’une directive claims_challenge dans l’en-tête www-authenticate à retourner à partir du point de terminaison UserInfo et/ou dans le jeton d’ID et/ou le jeton d’accès. Il s’agit d’une chaîne d’un objet JSON qui contient des listes de revendications demandées à partir de ces emplacements.

Valeur par défaut: None
auth_scheme

Vous pouvez fournir un msal.auth_scheme.PopAuthScheme objet afin que MSAL obtienne un jeton POP (Proof-of-Possession) pour vous.

Nouveautés de la version 1.26.0.

Valeur par défaut: None
authority
Valeur par défaut: None

Retours

Type Description
  • Une dictée ne contenant aucune clé « erreur » et contient généralement une clé « access_token », si la recherche du cache a réussi.

  • Aucun lorsqu’il n’y a simplement aucun jeton dans le cache.

  • Dict contenant une clé « erreur », lorsque l’actualisation du jeton a échoué.

get_accounts

Obtenez la liste des comptes qui se connectaient précédemment, c’est-à-dire qui existent dans le cache.

Un compte peut être utilisé ultérieurement pour acquire_token_silent rechercher ses jetons.

get_accounts(username=None)

Paramètres

Nom Description
username

Filtrez les comptes avec ce nom d’utilisateur uniquement. Respect de la casse.

Valeur par défaut: None

Retours

Type Description

Liste des objets de compte. Chaque compte est une dictée. Pour l’instant, nous documentons uniquement son champ « nom d’utilisateur ». Votre application peut choisir d’afficher ces informations à l’utilisateur final et d’autoriser l’utilisateur à choisir l’un de ses comptes à poursuivre.

get_authorization_request_url

Construit une URL pour vous permettre de démarrer une octroi de code d’autorisation.

get_authorization_request_url(scopes, login_hint=None, state=None, redirect_uri=None, response_type='code', prompt=None, nonce=None, domain_hint=None, claims_challenge=None, **kwargs)

Paramètres

Nom Description
scopes
Obligatoire

(Obligatoire) Étendues demandées pour accéder à une API protégée (une ressource).

state
str

Recommandé par OAuth2 pour la protection CSRF.

Valeur par défaut: None
login_hint
str

Identificateur de l'utilisateur. En règle générale, un nom d’utilisateur principal (UPN).

Valeur par défaut: None
redirect_uri
str

Adresse à laquelle revenir lors de la réception d’une réponse de l’autorité.

Valeur par défaut: None
response_type
str

La valeur par défaut est « code » pour une octroi de code d’autorisation OAuth2.

Vous pouvez utiliser d’autres contenus tels que « id_token » ou « jeton », ce qui déclencherait une octroi implicite, mais ce n’est pas recommandé.

Valeur par défaut: code
prompt
str

Par défaut, aucune valeur d’invite n’est envoyée, pas même chaîne "none". Vous devrez spécifier explicitement une valeur. Ses valeurs valides sont les constantes définies dans <xref:msal.Prompt>.

Valeur par défaut: None
nonce

Valeur aléatoire par chiffrement utilisée pour atténuer les attaques par relecture. Consultez également les spécifications OIDC.

Valeur par défaut: None
domain_hint

Il peut s’agir d’un « consommateur » ou d’une « organisation » ou d’un domaine de locataire « contoso.com ». S’il est inclus, il ignore le processus de découverte par e-mail que l’utilisateur passe sur la page de connexion, ce qui entraîne une expérience utilisateur légèrement plus simplifiée. Pour plus d’informations sur les valeurs possibles disponibles dans le document Flux de code d’authentification et domain_hint document.

Valeur par défaut: None
claims_challenge

Le paramètre claims_challenge demande des revendications spécifiques demandées par le fournisseur de ressources sous la forme d’une directive claims_challenge dans l’en-tête www-authenticate à retourner à partir du point de terminaison UserInfo et/ou dans le jeton d’ID et/ou le jeton d’accès. Il s’agit d’une chaîne d’un objet JSON qui contient des listes de revendications demandées à partir de ces emplacements.

Valeur par défaut: None

Retours

Type Description

URL d’autorisation sous forme de chaîne.

initiate_auth_code_flow

Lancez un flux de code d’authentification.

Plus tard, lorsque la réponse atteint votre redirect_uri, vous pouvez utiliser acquire_token_by_auth_code_flow pour terminer l’authentification/autorisation.

initiate_auth_code_flow(scopes, redirect_uri=None, state=None, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, max_age=None, response_mode=None)

Paramètres

Nom Description
scopes
Obligatoire

Il s’agit d’une liste de chaînes sensibles à la casse.

redirect_uri
str

Optional. S’il n’est pas spécifié, le serveur utilise le serveur préinscrit.

Valeur par défaut: None
state
str

Valeur opaque utilisée par le client pour maintenir l’état entre la demande et le rappel. En l’absence, cette bibliothèque génère automatiquement une bibliothèque en interne.

Valeur par défaut: None
prompt
str

Par défaut, aucune valeur d’invite n’est envoyée, pas même chaîne "none". Vous devrez spécifier explicitement une valeur. Ses valeurs valides sont les constantes définies dans <xref:msal.Prompt>.

Valeur par défaut: None
login_hint
str

Optional. Identificateur de l'utilisateur. En règle générale, un nom d’utilisateur principal (UPN).

Valeur par défaut: None
domain_hint

Il peut s’agir d’un « consommateur » ou d’une « organisation » ou d’un domaine de locataire « contoso.com ». S’il est inclus, il ignore le processus de découverte par e-mail que l’utilisateur passe sur la page de connexion, ce qui entraîne une expérience utilisateur légèrement plus simplifiée. Pour plus d’informations sur les valeurs possibles disponibles dans le document Flux de code d’authentification et domain_hint document.

Valeur par défaut: None
max_age
int

FACULTATIF. Âge maximal de l’authentification. Spécifie le temps écoulé autorisé en secondes depuis la dernière fois que le End-User a été authentifié activement. Si le temps écoulé est supérieur à cette valeur, Plateforme d'identités Microsoft authentifie activement l’utilisateur final.

MSAL Python valide également automatiquement la auth_time dans le jeton d’ID.

Nouveautés de la version 1.15.

Valeur par défaut: None
response_mode
str

FACULTATIF. Spécifie la méthode avec laquelle les paramètres de réponse doivent être retournés. La valeur par défaut est équivalente à query, qui était toujours suffisamment sécurisée dans MSAL Python (car MSAL Python ne transfère pas de jetons via le paramètre de requête au premier endroit). Pour une meilleure sécurité, nous vous recommandons d’utiliser la valeur form_post. En mode « form_post », les paramètres de réponse sont encodés en tant que valeurs de formulaire HTML transmises via la méthode HTTP POST et encodées dans le corps à l’aide du format application/x-www-form-urlencoded. Les valeurs valides peuvent être « form_post » pour HTTP POST pour appeler l’URI de rappel ou « requête » (valeur par défaut) pour HTTP GET avec des paramètres encodés dans la chaîne de requête. Plus d’informations sur les valeurs possibles ici https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#ResponseModes et ici https://openid.net/specs/oauth-v2-form-post-response-mode-1_0.html#FormPostResponseMode

Note

Vous devez configurer votre infrastructure web pour accepter form_post réponses au lieu de réponses de requête.

Bien que ce paramètre fonctionne toujours, il sera supprimé dans une version ultérieure.

L’utilisation des modes de réponse basés sur des requêtes est moins sécurisée et doit être évitée.

Valeur par défaut: None
claims_challenge
Valeur par défaut: None

Retours

Type Description

Flux de code d’authentification. Il s’agit d’un dicté sous cette forme :


   {
       "auth_uri": "https://...",  // Guide user to visit this
       "state": "...",  // You may choose to verify it by yourself,
                        // or just let acquire_token_by_auth_code_flow()
                        // do that for you.
       "...": "...",  // Everything else are reserved and internal
   }

L’appelant est censé :

  1. en quelque sorte stocker ce contenu, généralement à l’intérieur de la session active,

  2. guidez l’utilisateur final (c’est-à-dire le propriétaire de la ressource) pour visiter cette auth_uri,

  3. puis relayer cette dictée et la réponse d’authentification suivante à acquire_token_by_auth_code_flow.

is_pop_supported

Retourne True si ce client prend en charge le jeton d’accès de preuve de possession.

is_pop_supported()

remove_account

Me déconnecter et m’oublier du cache de jetons

remove_account(account)

Paramètres

Nom Description
account
Obligatoire

Attributs

ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID

ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID = '832'

ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID

ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID = '622'

ACQUIRE_TOKEN_BY_REFRESH_TOKEN

ACQUIRE_TOKEN_BY_REFRESH_TOKEN = '85'

ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID

ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID = '301'

ACQUIRE_TOKEN_FOR_CLIENT_ID

ACQUIRE_TOKEN_FOR_CLIENT_ID = '730'

ACQUIRE_TOKEN_INTERACTIVE

ACQUIRE_TOKEN_INTERACTIVE = '169'

ACQUIRE_TOKEN_ON_BEHALF_OF_ID

ACQUIRE_TOKEN_ON_BEHALF_OF_ID = '523'

ACQUIRE_TOKEN_SILENT_ID

ACQUIRE_TOKEN_SILENT_ID = '84'

ATTEMPT_REGION_DISCOVERY

ATTEMPT_REGION_DISCOVERY = True

DISABLE_MSAL_FORCE_REGION

DISABLE_MSAL_FORCE_REGION = False

GET_ACCOUNTS_ID

GET_ACCOUNTS_ID = '902'

REMOVE_ACCOUNT_ID

REMOVE_ACCOUNT_ID = '903'