prise en charge de Services ADFS dans MSAL pour Python

Services ADFS (AD FS) dans Windows Server vous permet d’ajouter l’authentification et l’autorisation basées sur OpenID Connect et OAuth 2.0 à vos applications à l’aide du Microsoft Authentication Library (MSAL) pour Python. À l’aide de MSAL pour Python bibliothèque, votre application peut authentifier les utilisateurs directement auprès d’AD FS. Pour plus d’informations sur les scénarios, consultez les scénarios AD FS pour les développeurs.

Il existe généralement deux façons d’authentifier auprès d’AD FS :

  • MSAL Python parle à Microsoft Entra ID, qui est fédérée avec d’autres fournisseurs d’identité. La fédération s’effectue par le biais d’AD FS. MSAL Python se connecte à Microsoft Entra ID, qui connecte les utilisateurs gérés dans Microsoft Entra ID (utilisateurs gérés) ou les utilisateurs gérés par un autre fournisseur d’identité, tel qu’AD FS (utilisateurs fédérés). MSAL Python ne sait pas qu'un utilisateur est fédéré. Il communique simplement avec Microsoft Entra ID. L’autorité que vous utilisez dans ce cas est l’autorité habituelle (nom d’hôte d’autorité + locataire, commun ou organisations).
  • MSAL Python communique directement avec une autorité AD FS. Cela est pris en charge uniquement par AD FS 2019 et versions ultérieures.

Se connecter à Active Directory fédéré avec AD FS

Acquérir un jeton de manière interactive pour un utilisateur fédéré

Le code suivant s’applique si vous vous connectez directement à Services ADFS (AD FS) ou via Active Directory.

Lorsque vous appelez acquire_token_by_authorization_code ou acquire_token_by_device_flow, l’expérience utilisateur est généralement la suivante :

  1. L’utilisateur entre son ID de compte.
  2. Microsoft Entra ID affiche brièvement le message « Vous rediriger vers la page de votre organisation » et l'utilisateur est redirigé vers la page de connexion du fournisseur d'identité. La page de connexion est généralement personnalisée avec le logo de l’organisation.

Les versions AD FS prises en charge dans ce scénario fédéré sont les suivantes :

  • Services ADFS FS v2
  • Services ADFS v3 (Windows Server 2012 R2)
  • Services ADFS v4 (AD FS 2016)

Acquérir un jeton via un nom d’utilisateur et un mot de passe

Warning

Le flux ROPC (Resource Owner Password Credential) a été déconseillé pour les applications clientes publiques en raison des risques de sécurité. Microsoft recommande d’utiliser un flux d’authentification plus sécurisé. Suivez les instructions officielles sur la migration à partir de ROPC.

Le code suivant s’applique si vous vous connectez directement à Services ADFS (AD FS) ou via Active Directory.

Lorsque vous obtenez un jeton à l’aide de acquire_token_by_username_password, MSAL Python détermine le fournisseur d’identité à contacter en fonction du nom d’utilisateur. MSAL Python obtient un jeton SAML 1.1 du fournisseur d’identité, qu’il fournit ensuite à Microsoft Entra qui retourne le jeton web JSON (JWT). Nous déconseillons le flux de nom d’utilisateur et de mot de passe, car il présente des risques de sécurité qui ne sont pas présents dans d’autres flux. Pour plus d’informations sur la raison pour laquelle vous souhaitez éviter d’utiliser cette subvention, voir pourquoi Microsoft travaille à rendre les mots de passe une chose du passé.

Connexion directe à AD FS

Lorsque vous connectez le répertoire à AD FS, l’autorité que vous souhaitez utiliser pour générer votre application sera semblable à celle de https://somesite.contoso.com/adfs/

MSAL Python prend en charge ADFS 2019, mais ne prend pas en charge une connexion directe à ADFS 2016 ou ADFS v2. Une fois que vous avez mis à niveau votre système local vers ADFS 2019, vous pouvez utiliser MSAL Python.