Qu'est-ce que l'ADFS (Active Directory Federation Services) ?

On m'a dit que notre application PHP pourrait avoir besoin de prendre en charge l'authentification à l'aide de l'ADFS.

  1. Pour un non-Microsoft, qu'est-ce que l'ADFS ?

  2. En quoi diffère-t-il d'éléments comme LDAP ?

  3. Comment fonctionne-t-il ? Quel type d'information serait inclus dans une requête typique à un serveur ADFS ? Est-il conçu à la fois pour l'authentification et l'autorisation ?

  4. Les serveurs ADFS sont-ils généralement accessibles depuis l'Internet (alors que les contrôleurs de domaine AD d'entreprise ne le sont pas) ?

J&#8217ai essayé de lire certains documents de Technet, mais ils sont remplis d&#8217un langage Microsoft qui n&#8217est pas très utile.

Wikipedia est meilleur (voir ci-dessous), mais peut-être que certains membres de la communauté ServerFault peuvent combler certaines lacunes.

Active Directory Federation Services (ADFS)** est un composant logiciel développé par Microsoft qui peut être installé sur les systèmes d'exploitation Windows Server pour fournir aux utilisateurs un accès à signature unique aux systèmes et applications situés au-delà des frontières de l'organisation. Il utilise un modèle d'autorisation de contrôle d'accès basé sur les réclamations pour maintenir la sécurité des applications et mettre en œuvre une identité fédérée.

L'authentification basée sur les revendications est le processus d'authentification d'un utilisateur sur la base d'un ensemble de revendications sur son identité contenues dans un jeton de confiance.

Dans l'ADFS, la fédération d'identité est établie entre deux organisations en établissant la confiance entre deux domaines de sécurité. D'un côté, un serveur de fédération (côté Comptes) authentifie l'utilisateur par les moyens standard des services de domaine Active Directory, puis émet un jeton contenant une série de déclarations sur l'utilisateur, y compris son identité. De l'autre côté, le côté Ressources, un autre serveur de fédération valide le jeton et émet un autre jeton pour que les serveurs locaux acceptent l'identité revendiquée. Cela permet à un système de fournir un accès contrôlé à ses ressources ou services à un utilisateur qui appartient à un autre domaine de sécurité sans que l'utilisateur ait à s'authentifier directement auprès du système et sans que les deux systèmes partagent une base de données d'identités ou de mots de passe d'utilisateurs.

En pratique, cette approche est généralement perçue par l'utilisateur de la manière suivante :

  1. l'utilisateur se connecte à son PC local (comme il le ferait normalement en commençant à travailler le matin).
  2. l&#8217utilisateur a besoin d&#8217obtenir des informations sur le site extranet d&#8217une entreprise partenaire, par exemple pour obtenir des informations sur les prix ou les produits.
  3. l'utilisateur se rend sur le site extranet de l'entreprise partenaire - par exemple : http://example.com.
  4. le site Web du partenaire ne nécessite plus la saisie d'un mot de passe - les informations d'identification de l'utilisateur sont transmises au site extranet du partenaire à l'aide d'AD FS
  5. l'utilisateur est maintenant connecté au site Web du partenaire et peut interagir avec le site Web en étant "connecté" ;
Solution

Pour un non-Microsoft, qu'est-ce que l'ADFS ?

L'ADFS est la solution de Microsoft pour l'authentification unique et l'authentification basée sur le Web.

Elle est principalement utilisée pour fournir un ensemble unique d'informations d'identification permettant d'accéder à une variété de sites qui ne sont pas nécessairement hébergés dans le même domaine.

En quoi diffère-t-il de LDAP, par exemple ?

LDAP:

  • Communique par TCP/UDP sur le port 389 (ou le port 636 pour LDAPS).
  • Contient des commandes pour la recherche, la récupération, l'ajout, la suppression et la modification des utilisateurs, des profils et d'autres entrées de répertoire.
  • L'authentification HTTP peut toutefois être convertie en LDAP à l'aide d'outils tels que mod_authnz_ldap d'Apache.
  • Lorsqu'il est utilisé pour l'authentification de sites Web tiers, le nom d'utilisateur et le mot de passe doivent être fournis au tiers, ce qui n'est pas idéal pour la sécurité.
  • Il s'agit plutôt d'un standard ouvert et il existe de nombreuses implémentations Linux.

ADFS:

  • Mieux conçu pour le web car il communique via le standard HTTPS.
  • Suit un processus plus sûr, similaire (mais non exact) à OAuth, où le nom d'utilisateur et le mot de passe d'origine sont fournis directement au serveur ADFS de l'organisation (ou à un proxy, mais pas au tiers), qui, s'il est valide, renvoie un jeton unique pouvant être utilisé pour accéder à un site Web tiers.
  • Bien qu'il utilise certaines normes ouvertes (HTTPS, SAML, etc.), il est spécifique à Microsoft et nécessite Internet Information Services (IIS), qui ne fonctionne que sur les serveurs Windows.

Voir également [cette réponse][1] sur le sujet.

Comment cela fonctionne-t-il ? Quel type d'information une requête typique adressée à un serveur ADFS peut-elle contenir ? Est-il conçu à la fois pour l'authentification et l'autorisation ?

Il fonctionne avec un seul site (site A) qui héberge les serveurs ADFS / ADFS proxy et qui a accès aux informations d'identification (généralement en communiquant avec un contrôleur de domaine Active Directory). On lui accorde ensuite une confiance entre les autres sites (sites B &amp ; C) qui nécessitent une authentification par l'ADFS.

Lorsqu'un utilisateur tente d'accéder au site B dans son navigateur, le site le redirige vers le site proxy ADFS (site A) qui lui demande son nom d'utilisateur et son mot de passe, l'authentifie, lui renvoie un ensemble de cookies pour le mémoriser et le redirige vers le site B, avec un jeton d'accès.

Si l'utilisateur tente ensuite de visiter le site C, il sera également redirigé vers le site A pour authentification à partir du site proxy ADFS. Si les bons cookies existent, l'utilisateur n'aura pas à saisir à nouveau son mot de passe, mais sera instantanément redirigé vers le site C avec un jeton d'accès.

L'ADFS peut être configuré avec des revendications (ou permissions) spécifiques pour l'utilisateur, à des fins d'autorisation. Il peut donc jouer les deux rôles. (Notez la [différence entre authentification et autorisation][2]).

Certaines personnes préfèrent ne pas l'utiliser pour l'autorisation et garder la gestion des permissions dans le site Web tiers. L'inconvénient évident est que le site A &amp ; B doivent tous deux garder la trace des comptes d'utilisateurs, alors que dans le scénario où l'ADFS gère les deux, seul l'ADFS doit être au courant des utilisateurs.

Les serveurs ADFS sont-ils généralement accessibles depuis l'Internet (alors que les contrôleurs de domaine AD de l'entreprise ne le sont pas) ?

Oui, presque toujours. L'ADFS est basé sur l'idée qu'il sera principalement utilisé pour l'authentification des sites Web. Et il est construit autour de IIS.

Le site proxy de l'ADFS est celui qui est généralement accessible depuis l'Internet. Cependant, l'ADFS lui-même ne l'est pas. L'ADFS est généralement un serveur distinct de l'ADFS-proxy.

  • Serveur ADFS Serveur qui est lié aux références, et qui possède la configuration des réclamations ainsi que les trusts. Généralement non accessible au public.
  • Serveur proxy ADFS Serveur qui héberge l'instance IIS qui a les pages de connexion pour les sites Web nécessitant une authentification. Il communique avec l'ADFS lorsqu'une authentification est requise. Généralement accessible au public.

[1] : https://stackoverflow.com/questions/28683739/ldap-vs-adfs-single-sign-on [2] : https://serverfault.com/questions/57077/what-is-the-difference-between-authentication-and-authorization

Commentaires (4)