Partager via


Authentifier des applications Python auprès des services Azure pendant le développement local à l’aide de l’authentification répartie

L’authentification répartie collecte les informations d’identification de l’utilisateur à l’aide du répartiteur d’authentification système pour authentifier une application. Un répartiteur d’authentification système est une application s’exécutant sur l’ordinateur d’un utilisateur qui gère les liaisons d’authentification et la maintenance des jetons pour tous les comptes connectés.

L’authentification répartie offre les avantages suivants :

  • Active l'Sign-On authentification unique (SSO) : Permet aux applications de simplifier la façon dont les utilisateurs s’authentifient avec l’ID Microsoft Entra et protègent les jetons d’actualisation microsoft Entra contre l’exfiltration et l’utilisation incorrecte.
  • Sécurité renforcée : De nombreuses améliorations de sécurité sont fournies avec le répartiteur, sans avoir à mettre à jour la logique de l’application.
  • Prise en charge améliorée des fonctionnalités : Grâce à l’aide du répartiteur, les développeurs peuvent accéder à des fonctionnalités de système d’exploitation et de service riches.
  • Intégration du système : Les applications qui utilisent le plug-and-play broker avec le sélecteur de compte intégré, ce qui permet à l’utilisateur de choisir rapidement un compte existant au lieu de réentérer les mêmes informations d’identification sur et sur plusieurs.
  • Protection des jetons : Garantit que les jetons d’actualisation sont liés à l’appareil et permet aux applications d’acquérir des jetons d’accès liés à l’appareil. Voir Protection des jetons.

Windows fournit un répartiteur d’authentification appelé Gestionnaire de comptes web (WAM). WAM permet aux fournisseurs d’identité tels que Microsoft Entra ID de se connecter en mode natif au système d’exploitation et de fournir des services de connexion sécurisés aux applications. L’authentification répartie active l’application pour toutes les opérations autorisées par les informations d’identification de connexion interactives.

Les comptes personnels Microsoft et les comptes professionnels ou scolaires sont pris en charge. Sur les versions windows prises en charge, l’interface utilisateur basée sur le navigateur par défaut est remplacée par une expérience d’authentification plus fluide, similaire aux applications Windows intégrées.

macOS n’inclut pas en mode natif un répartiteur d’authentification intégré. La bibliothèque de client Azure Identity implémente des fonctionnalités d’authentification répartie à l’aide de mécanismes spécifiques à la plateforme et peut s’intégrer à des applications telles que le portail d’entreprise Microsoft lorsque les appareils sont gérés. Pour plus d’informations, consultez le plug-in Microsoft Enterprise SSO pour les appareils Apple.

Linux utilise l’authentification unique Microsoft pour Linux comme répartiteur d’authentification.

Configurer l’application pour l’authentification répartie

Pour activer l’authentification répartie dans votre application, procédez comme suit :

  1. Dans le portail Azure, accédez à Microsoft Entra ID et sélectionnez Inscriptions d’applications dans le menu de gauche.

  2. Sélectionnez l'enregistrement de votre application, puis sélectionnez Authentification.

  3. Ajoutez l’URI de redirection approprié à votre inscription d’application via une configuration de plateforme :

    1. Sous Configurations des plateformes, sélectionnez + Ajouter une plateforme.

    2. Sous Configurer des plateformes, sélectionnez la vignette de votre type d’application (plateforme) pour configurer ses paramètres, tels que les applications mobiles et de bureau.

    3. Dans les URI de redirection personnalisés, entrez l’URI de redirection suivant pour votre plateforme :

      Platform URI de redirection
      Windows 10+ ou WSL ms-appx-web://Microsoft.AAD.BrokerPlugin/{your_client_id}
      macOS msauth.com.msauth.unsignedapp://auth pour les applications non signées
      msauth.{bundle_id}://auth pour les applications signées
      Linux https://login.microsoftonline.com/common/oauth2/nativeclient

      Remplacez {your_client_id} ou {bundle_id} utilisez l’ID d’application (client) dans le volet Vue d’ensemble de l’inscription de l’application.

    4. Sélectionnez Configurer.

    Pour en savoir plus, consultez Ajouter un URI de redirection à l'enregistrement d'une application.

  4. De nouveau dans le volet Authentification, sous Paramètres avancés, sélectionnez Oui pour Autoriser les flux de clients publics.

  5. Sélectionnez Enregistrer pour appliquer les modifications.

  6. Pour autoriser l'application pour des ressources spécifiques, naviguez jusqu'à la ressource en question, sélectionnez Permissions API et activez Microsoft Graph et les autres ressources auxquelles vous souhaitez accéder.

    Important

    Vous devez également être l'administrateur de votre locataire pour accorder le consentement à votre application lorsque vous vous connectez pour la première fois.

Attribuer des rôles

Pour exécuter votre code d’application avec l’authentification répartie, accordez à votre compte d’utilisateur des autorisations à l’aide du contrôle d’accès en fonction du rôle (RBAC) Azure. Attribuez un rôle approprié à votre compte d’utilisateur pour le service Azure approprié. Par exemple:

  • Stockage Blob Azure : attribuez le rôle Contributeur aux données du compte de stockage .
  • Azure Key Vault : attribuez le rôle Agent de secrets Key Vault .

Si une application est spécifiée, elle doit avoir des permissions API définies pour user_impersonation Accessure Storage (étape 6 de la section précédente). Cette permission API permet à l'application d'accéder au stockage Azure au nom de l'utilisateur connecté après que le consentement a été accordé lors de la connexion.

Implémenter le code

L’exemple suivant illustre l’utilisation de InteractiveBrowserBrokerCredential pour s’authentifier auprès de BlobServiceClient :

  1. Installez les packages. pywin32 sera utilisé dans Windows pour récupérer la fenêtre actuellement au premier plan.

    pip install azure-identity-broker pywin32
    
  2. Obtenez une référence à la fenêtre parente en haut de laquelle la boîte de dialogue du sélecteur de compte doit apparaître. Dans l’exemple de code ci-dessous, il s’agira de la ligne :

    current_window_handle = win32gui.GetForegroundWindow()
    
  3. Créez une instance de InteractiveBrowserBrokerCredential en passant une référence de la fenêtre parente. Dans l’exemple de code final, il s’agira de la ligne suivante :

    credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle)
    
  4. Utilisez le credential pour accéder au service Azure, qui est Stockage Blob dans cet exemple.

Voici l’exemple de code final :

import win32gui
from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient

# Get the handle of the current window
current_window_handle = win32gui.GetForegroundWindow()

# To authenticate and authorize with an app, use the following line to get a credential and
# substitute the <app_id> and <tenant_id> placeholders with the values for your app and tenant.
# credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle, client_id=<app_id>, tenant_id=<tenant_id>)
credential = InteractiveBrowserBrokerCredential(parent_window_handle=current_window_handle)
client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Pour un contrôle plus précis, comme la définition d'un délai d'attente, vous pouvez fournir des arguments spécifiques à InteractiveBrowserBrokerCredential, comme timeout.

Pour que le code s’exécute correctement, votre compte d’utilisateur doit être affecté à un rôle Azure sur le compte de stockage qui autorise l’accès aux conteneurs d’objets blob tels que contributeur aux données du compte de stockage. Si une application est spécifiée, elle doit avoir des permissions API définies pour user_impersonation Accessure Storage (étape 6 de la section précédente). Cette permission API permet à l'application d'accéder au stockage Azure au nom de l'utilisateur connecté après que le consentement a été accordé lors de la connexion.

La capture d’écran suivante montre l’expérience d’authentification interactive et répartie alternative :

Capture d’écran montrant l’expérience de connexion Windows lors de l’utilisation d’une instance InteractiveBrowserCredential avec broker pour authentifier un utilisateur.

Important

La prise en charge de macOS existe dans les azure-identity-broker versions 1.3.0 et ultérieures.

L’exemple suivant illustre l’utilisation d’un InteractiveBrowserBrokerCredential pour s’authentifier auprès du BlobServiceClient.

  1. Installez les packages. msal (Bibliothèque d’authentification Microsoft) est utilisée pour fournir une constante pour le parent_window_handle paramètre.

    pip install azure-identity-broker msal
    
  2. Créez une instance de InteractiveBrowserBrokerCredential en transmettant la référence de la fenêtre parente. Cela vous oblige à obtenir une référence à la fenêtre parente sur laquelle la boîte de dialogue du sélecteur de comptes doit apparaître (fournie par le msal module). Dans l’exemple de code ci-dessous, il s’agira de la ligne :

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. Utilisez le credential pour accéder au service Azure, qui est le Stockage Blob dans cet exemple.

Voici l’exemple de code final :

from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient
import msal

credential = InteractiveBrowserBrokerCredential(
    parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
)

client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Pour plus d’informations sur l’utilisation de MSAL Python avec des répartiteurs d’authentification sur macOS, consultez Utilisation de MSAL Python avec un répartiteur d’authentification sur macOS.

Pour un contrôle plus précis, comme la définition d'un délai d'attente, vous pouvez fournir des arguments spécifiques à InteractiveBrowserBrokerCredential, comme timeout.

Pour que le code s’exécute correctement, votre compte d’utilisateur doit être affecté à un rôle Azure sur le compte de stockage qui autorise l’accès aux conteneurs d’objets blob tels que contributeur aux données du compte de stockage. Si une application est spécifiée, elle doit avoir des permissions API définies pour user_impersonation Accessure Storage (étape 6 de la section précédente). Cette permission API permet à l'application d'accéder au stockage Azure au nom de l'utilisateur connecté après que le consentement a été accordé lors de la connexion.

La capture d’écran suivante montre l’expérience d’authentification interactive et répartie alternative :

Capture d’écran montrant l’expérience de connexion macOS lors de l’utilisation d’une instance InteractiveBrowserCredential avec broker pour authentifier un utilisateur.

Important

La prise en charge de Linux existe dans les azure-identity-broker versions 1.3.0 et ultérieures.

L’exemple suivant illustre l’utilisation de InteractiveBrowserBrokerCredential pour s’authentifier auprès de BlobServiceClient :

  1. Installez les packages. msal (Bibliothèque d’authentification Microsoft) est utilisée pour fournir une constante pour le parent_window_handle paramètre.

    pip install azure-identity-broker msal
    
  2. Créez une instance de InteractiveBrowserBrokerCredential en passant la référence de la fenêtre parente. Cela vous oblige à obtenir une référence à la fenêtre parente sur laquelle la boîte de dialogue du sélecteur de comptes doit apparaître (fournie par le msal module). Dans l’exemple de code ci-dessous, il s’agira de la ligne :

    credential = InteractiveBrowserBrokerCredential(
        parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
    )
    
  3. Utilisez le credential pour accéder au service Azure Blob Storage dans cet exemple.

Voici l’exemple de code final :

from azure.identity.broker import InteractiveBrowserBrokerCredential
from azure.storage.blob import BlobServiceClient
import msal

credential = InteractiveBrowserBrokerCredential(
    parent_window_handle=msal.PublicClientApplication.CONSOLE_WINDOW_HANDLE
)

client = BlobServiceClient("https://<storage-account-name>.blob.core.windows.net/", credential=credential)

# Prompt for credentials appears on first use of the client
for container in client.list_containers():
    print(container.name)

Vérifiez que les dépendances Linux sont installées sur votre distribution Linux avant d’exécuter cet exemple de code. En outre, il existe des instructions distinctes pour WSL en fonction de la distribution.

Pour un contrôle plus précis, comme la définition d'un délai d'attente, vous pouvez fournir des arguments spécifiques à InteractiveBrowserBrokerCredential, comme timeout.

Pour que le code s’exécute correctement, votre compte d’utilisateur doit être affecté à un rôle Azure sur le compte de stockage qui autorise l’accès aux conteneurs d’objets blob tels que contributeur aux données du compte de stockage. Si une application est spécifiée, elle doit avoir des permissions API définies pour user_impersonation Accessure Storage (étape 6 de la section précédente). Cette permission API permet à l'application d'accéder au stockage Azure au nom de l'utilisateur connecté après que le consentement a été accordé lors de la connexion.

La vidéo suivante montre l’expérience d’authentification interactive et répartie alternative :

Image gif animée montrant l’expérience de connexion Linux lors de l’utilisation d’une instance InteractiveBrowserCredential avec broker pour authentifier un utilisateur.