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

77

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

  1. Pour les utilisateurs autres que Microsoft, qu’est-ce que ADFS?

  2. Comment cela diffère-t-il de choses comme LDAP?

  3. Comment ça marche? Quel type d'informations serait inclus dans une demande typique à un serveur ADFS? Est-il conçu pour l'authentification et l'autorisation?

  4. Les serveurs ADFS sont-ils généralement accessibles à partir d'Internet (contrairement aux contrôleurs de domaine d'entreprise AD)?

J'ai essayé de lire certains documents Technet, mais ce livre contient des informations Microsoft qui ne sont pas d'une grande aide.

Wikipedia est meilleur (voir ci-dessous), mais peut-être qu'une partie de la communauté ServerFault pourra combler certaines des lacunes.

ADFS (Active Directory Federation Services) 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 en connexion unique aux systèmes et applications situés au-delà des limites de l'organisation. Il utilise un modèle d'autorisation de contrôle d'accès basé sur les revendications pour maintenir la sécurité des applications et implémenter l'identité fédérée.

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

Dans ADFS, la fédération d'identité est établie entre deux organisations en établissant une relation de confiance entre deux domaines de sécurité. Un serveur de fédération d'un côté (côté Comptes) authentifie l'utilisateur par le biais des moyens standard des services de domaine Active Directory, puis émet un jeton contenant une série de revendications sur l'utilisateur, y compris son identité. De l'autre côté, du côté des 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 appartenant à un autre domaine de sécurité sans exiger que l'utilisateur s'authentifie directement auprès du système et sans que les deux systèmes ne partagent une base de données d'identités d'utilisateur ou de mots de passe.

En pratique, cette approche est généralement perçue par l'utilisateur comme suit:

  1. L'utilisateur se connecte à son PC local (comme il le ferait généralement lorsqu'il commence à travailler le matin)
  2. L'utilisateur doit obtenir des informations sur le site extranet de la société partenaire, par exemple pour obtenir les tarifs ou les détails du produit.
  3. L'utilisateur accède au site extranet de la société partenaire, par exemple: http://example.com.
  4. Le site Web partenaire ne nécessite plus de 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 "connecté".

De https://en.wikipedia.org/wiki/Active_Directory_Federation_Services

Simon East
la source
J'ai trouvé ces articles et cette vidéo utiles pour donner un aperçu.
Simon East
Reaces a fourni une excellente réponse. La seule information supplémentaire que j'ajouterais est qu'il serait utile de comprendre le protocole WS-Federation et le langage SAML (Security Assertion Markup Language), normes standard implémentées par ADFS. Voici quelques vidéos que j'ai trouvées utiles pour comprendre ces concepts (assez complexes). Malheureusement, ils contiennent tellement de matériel que je ne peux pas l'inclure ici. ! [Vignette vidéo Comprendre SAML et Single Sign-On 101 sur YouTube] ( youtube.com/watch?v=gUmMcecHN9s ) [! [Vignette de la vidéo] (http
Simon East,
J'ai également eu du mal à comprendre ADFS. J'avais besoin d'une explication dès le début (je ne suis pas une personne AD). Cette vidéo incluse dans la série mentionnée dans les commentaires ici m'a été très utile. C’est là que toute nouvelle personne sans expérience avec ADFS doit commencer, puis continuer avec le reste des vidéos de la série. J'espère que ça aide. youtube.com/…
Mauricio Zaragoza Le
1
Désolé, un modérateur a supprimé ma réponse avec les vidéos utiles et en a fait un commentaire ci-dessus, mais il est maintenant cassé. Frustrant.
Simon East

Réponses:

98

Pour les utilisateurs autres que Microsoft, qu’est-ce que ADFS?

ADFS est la solution de Microsoft pour l'authentification unique et l'authentification Web.

Il est principalement utilisé pour fournir un ensemble unique d'informations d'identification pouvant accéder à une variété de sites non nécessairement hébergés dans le même domaine.

Comment cela diffère-t-il de choses comme LDAP?

LDAP:

  • Communique via TCP / UDP sur le port 389 (ou le port 636 pour LDAPS)
  • Contient des commandes pour rechercher / récupérer / ajouter / supprimer / modifier des utilisateurs, des profils et d'autres entrées de répertoire
  • Ne peut pas être effectué directement par un navigateur Web. Toutefois, l'authentification HTTP peut être traduite en LDAP à l'aide d'éléments comme Apache mod_authnz_ldap.
  • Lorsqu'il est utilisé pour l'authentification de sites Web tiers, nécessite que le nom d'utilisateur et le mot de passe soient fournis au tiers, ce qui n'est pas idéal pour la sécurité.
  • Est plus d'un standard ouvert et a de nombreuses implémentations de Linux.

ADFS:

  • Mieux conçu pour le Web car il communique via HTTPS standard
  • Suit un processus plus sûr, similaire (mais non exact) à OAuth, dans lequel le nom d'utilisateur / mot de passe d'origine est fourni directement au serveur ADFS de l'entreprise (ou à un proxy, mais pas à un tiers). Ce dernier, 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 requiert les services IIS (Internet Information Services) qui ne s'exécutent que sur des serveurs Windows.

Voir aussi cette réponse à ce sujet.

Comment ça marche? Quel type d'informations serait inclus dans une demande typique à un serveur ADFS? Est-il conçu pour l'authentification et l'autorisation?

Il fonctionne avec un seul site (site A) qui héberge les serveurs proxy ADFS / ADFS, qui ont accès aux informations d'identification (généralement en communiquant avec un contrôleur de domaine Active Directory). Une confiance est ensuite établie entre les autres sites (sites B et C) nécessitant une authentification via ADFS.

Lorsqu'un utilisateur tente d'accéder au site B dans son navigateur, celui-ci le redirige vers le site Web du proxy ADFS (site A), qui lui demande son nom d'utilisateur et son mot de passe, les authentifie, renvoie un ensemble de cookies pour les mémoriser et les redirige. retour sur 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 s'authentifier à partir du site Web proxy ADFS. Si les bons cookies existent, l'utilisateur ne sera plus obligé de saisir son mot de passe, mais sera immédiatement redirigé vers le site C avec un jeton.

Les ADFS peuvent être configurés avec des revendications (ou autorisations) spécifiques pour l'utilisateur, à des fins d'autorisation. Cela peut donc servir les deux rôles. (Notez la différence entre authentification et autorisation .)

Certaines personnes préfèrent ne pas l'utiliser pour des autorisations mais conserver la gestion des autorisations dans le site Web tiers. L'inconvénient évident est que les sites A & B doivent garder une trace des comptes d'utilisateurs, tandis que dans le scénario où ADFS gère les deux, seul ADFS doit connaître les utilisateurs.

Les serveurs ADFS sont-ils généralement accessibles à partir d'Internet (contrairement aux contrôleurs de domaine d'entreprise AD)?

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

Le site proxy ADFS est celui qui est généralement accessible à partir d'Internet. Cependant, le système ADFS lui-même ne l'est pas. ADFS est généralement un serveur distinct du proxy ADFS.

  • ADFS Server
    Server qui établit un lien vers les informations d'identification et possède la configuration des revendications ainsi que les approbations. Généralement pas accessible au public.
  • ADFS Proxy Server
    Server qui héberge l'instance IIS contenant les pages de connexion des sites Web nécessitant une authentification. Communique avec le système ADFS lorsqu’il exige une authentification. Généralement accessible au public.
Reaces
la source
11
Pour clarifier: le serveur proxy ADFS doit être exécuté sur IIS (Windows). Cependant, les sites Web clients (B & C) peuvent exécuter tout système d'exploitation et serveur Web, y compris Linux.
Olli
Très utile, je viens de créer un compte pour vous remercier.
Juan
En élargissant la réponse de @Reaces, ADFS 4.0 sur Windows Server 2016 prend entièrement en charge OAuth / OpenId Connect.
Mohammad Reza Sadreddini
@MohammadRezaSadreddini N'hésitez pas à modifier la réponse pour la développer.
Réactive