Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La bibliothèque Microsoft Authentication Library (MSAL) pour Python vous permet de connecter des utilisateurs ou des applications avec des identités Microsoft (Microsoft Entra ID, comptes Microsoft et Microsoft Entra ID comptes). À l’aide de MSAL Python, vous pouvez acquérir des jetons de Microsoft Entra ID pour appeler des API web protégées telles que Microsoft Graph, d’autres API Microsoft ou vos propres API.
Prerequisites
- Un compte Azure avec un abonnement actif. Créer un compte gratuit.
- Python 3.6+.
Installer le package
Installez le paquet MSAL pour Python. Vous pouvez trouver MSAL Python sur PyPI.
pip install msal
Concepts d’identité
MSAL Python fait partie de l’écosystème Plateforme d'identités Microsoft. Familiarisez-vous avec les concepts suivants pour utiliser efficacement MSAL Python pour protéger vos applications et API :
- Gestion de l’identité et de l’accès
- Authentification et autorisation
- OAuth 2.0 et OpenID Connect (OIDC) dans le Plateforme d'identités Microsoft
- Comptes clients confidentiels et publics dans le Plateforme d'identités Microsoft
- Jetons de sécurité
Scénarios d’usage
Pour utiliser MSAL Python, inscrivez une application auprès du Plateforme d'identités Microsoft. Vous aurez besoin d'un compte Azure avec un abonnement actif. Créez un compte gratuit si vous n’en avez pas. Vous pouvez enregistrer votre application dans un tenant client ou un tenant de personnel.
Les applications peuvent utiliser msAL Python pour acquérir des jetons pour accéder aux API protégées. Différents types d’applications acquièrent des jetons à l’aide de différents flux d’authentification. Les types d’applications pris en charge incluent les applications de bureau, les applications web, les API web et les applications s’exécutant sur des appareils qui n’ont pas de navigateur (par exemple, les appareils IoT).
Dans MSAL Python, les applications sont classées comme suit :
- Applications clientes publiques (bureau et mobile). Ces types d’applications ne peuvent pas stocker les secrets d’application en toute sécurité.
- Applications clientes confidentielles (applications web, API web et applications démon). Ces types d’applications stockent en toute sécurité un secret inscrit auprès de Microsoft Entra ID.
Pour plus d’informations, consultez la documentation sur les applications clientes publiques et confidentielles et les différents types d’applications et leurs flux d’authentification dans le Plateforme d'identités Microsoft.
Après avoir déterminé si votre application est une application cliente publique ou confidentielle, vous pouvez utiliser MSAL Python pour acquérir des jetons pour différents scénarios.
Utilisation de base
L’acquisition de jetons avec MSAL Python suit un modèle en trois étapes. Il y aura des variations pour différents flux. Si vous souhaitez les voir en action, téléchargez nos exemples.
MSAL s’appuie sur une séparation propre entre les applications clientes publiques et confidentielles. Par conséquent, créez une instance de
PublicClientApplicationou deConfidentialClientApplicationet réutilisez-la tout au long du cycle de vie de votre application. Par exemple, pour une application cliente publique, le code d’initialisation peut ressembler à ceci :from msal import PublicClientApplication app = PublicClientApplication( "your_client_id", authority="https://login.microsoftonline.com/common")La valeur de l’autorité varie en fonction du type de comptes dans lequel vous vous connectez et du type de locataire dans lequel votre application est inscrite. Par exemple, pour vous connecter à la fois à des comptes Microsoft professionnels et personnels créés dans des locataires de main-d’œuvre (Microsoft Entra ID), vous utiliseriez
https://login.microsoftonline.com/common. Pour les comptes clients approvisionnés dans les locataires clients, votre autorité prend une forme telle quehttps://<subdomain>.ciamlogin.com. Pour plus d’informations, consultez la documentation de l’émetteur de jeton.Essayez d’abord d’obtenir les jetons du cache. Le modèle d’API dans MSAL vous permet de contrôler explicitement comment utiliser le cache de jetons. Bien que la partie de mise en cache soit techniquement facultative, nous vous recommandons vivement de l’utiliser dans votre application. À l’aide du cache, vous pouvez vous assurer que vous n’effectuez pas d’appels d’API supplémentaires et gérez automatiquement l’actualisation du jeton.
# initialize result variable to hole the token response result = None # We now check the cache to see # whether we already have some accounts that the end user already used to sign in before. accounts = app.get_accounts() if accounts: # If so, you could then somehow display these accounts and let end user choose print("Pick the account you want to use to proceed:") for a in accounts: print(a["username"]) # Assuming the end user chose this one chosen = accounts[0] # Now let's try to find a token in cache for this account result = app.acquire_token_silent(["User.Read"], account=chosen)S'il n'existe aucun jeton approprié dans le cache ou si vous avez choisi d'ignorer l'étape précédente, envoyez une demande à Microsoft Entra ID pour obtenir un jeton. Il existe différentes méthodes basées sur votre type de client et votre scénario, mais à des fins de l’exemple, nous montrons comment utiliser
acquire_token_interactive, ce qui invite l’utilisateur à fournir ses informations d’identification.if not result: # So no suitable token exists in cache. Let's get a new one from Azure AD. result = app.acquire_token_interactive(scopes=["User.Read"]) if "access_token" in result: print(result["access_token"]) # Yay! else: print(result.get("error")) print(result.get("error_description")) print(result.get("correlation_id")) # You may need this when reporting a bugEnregistrez le code dans un fichier Python localement, par exemple msaltest.py.
Exécutez le code en exécutant
python .\msalpytest.py. Le visuel suivant montre l’expérience de connexion pour cet exemple.
Une fois l’authentification terminée et que vous avez fermé le navigateur, vous devez être en mesure de voir le jeton d’accès imprimé dans le terminal.
Meilleures pratiques pour une application robuste prête pour l’entreprise
Vous pouvez acquérir un jeton pour une API web protégée à l’aide de MSAL Python. Vous n’avez pas non plus à vous charger vous-même de l’actualisation des jetons d’authentification. Toutefois, pour créer des applications robustes et prêtes pour l’entreprise, vous devrez faire un peu plus. Par exemple, vous souhaiterez :
Gérez les exceptions, à la fois lorsque vous achetez un jeton, mais aussi lorsque vous appelez l’API web protégée. En particulier, si votre application s’exécute dans un locataire Microsoft Entra où les administrateurs du locataire ont défini des stratégies d’accès conditionnel pour appliquer l’authentification multifacteur (MFA), vous devez gérer un défi de revendication.
Vous pouvez activer la journalisation pour résoudre les problèmes de votre application et aider vos utilisateurs, tout en respectant leur confidentialité et en étant conformes au RGPD.
Échantillons
Il existe plusieurs exemples que vous pouvez utiliser pour prendre en main MSAL Python.
- Exemples du référentiel de bibliothèques. Ces exemples illustrent les différentes configurations et flux d’authentification que vous implémentez à l’aide de MSAL Python.
- Référentiel unique avec des exemples utilisés dans notre documentation. Ces exemples s’accompagnent d’une documentation pour vous aider à les créer et à les reproduire à partir de zéro.
References
Voir aussi
- Instancier votre application à l’aide de MSAL Python
- Acquérir des jetons à l’aide de MSAL Python