web-dev-qa-db-fra.com

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

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

  1. Pour une personne non-Microsoft, qu'est-ce que ADFS?

  2. En quoi 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 depuis Internet (contrairement aux contrôleurs de domaine AD d'entreprise)?

J'ai essayé de lire certains des documents Technet, mais c'est plein de Microsoft qui n'est pas extrêmement utile.

Wikipédia est meilleur (voir ci-dessous), mais peut-être qu'une partie de la communauté ServerFault peut 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 par authentification unique aux systèmes et applications situés au-delà des frontières organisationnelles. 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 la confiance entre deux domaines de sécurité. Un serveur de fédération d'un côté (le côté Comptes) authentifie l'utilisateur via les 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é, 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 appartenant à un autre domaine de sécurité sans que l'utilisateur ne s'authentifie 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 utilisateur.

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 fait généralement lorsqu'il commence à travailler le matin)
  2. L'utilisateur doit obtenir des informations sur le site extranet d'une entreprise partenaire - par exemple pour obtenir les prix ou les détails du produit
  3. L'utilisateur accède au site extranet de l'entreprise partenaire - par exemple: http://example.com
  4. Le site Web partenaire ne nécessite plus de mot de passe à saisir - à la place, les informations d'identification de l'utilisateur sont transmises au site extranet partenaire à l'aide d'AD FS
  5. L'utilisateur est maintenant connecté au site Web partenaire et peut interagir avec le site Web "connecté"

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

88
Simon East

Pour une personne non 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 qui ne sont pas nécessairement hébergés dans le même domaine.

En quoi diffère-t-il de choses comme LDAP?

LDAP:

  • Communique en utilisant 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 exécuté directement par un navigateur Web, cependant l'authentification HTTP peut être traduite en LDAP en utilisant des choses comme mod_authnz_ldap D'Apache.
  • 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 un standard ouvert et possède de nombreuses implémentations Linux.

ADFS:

  • Mieux conçu pour le Web car il communique via HTTPS standard
  • Suit un processus plus sûr similaire (mais pas exact) à OAuth où le nom d'utilisateur/mot de passe d'origine est fourni directement au serveur ADFS de l'organisation (ou un proxy, mais pas le tiers), qui s'il est valide, renvoie un jeton unique qui peut ê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 aussi cette réponse sur le 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 en ayant un seul site (site A) qui héberge les serveurs proxy ADFS/ADFS, qui a accès aux informations d'identification (généralement en communiquant avec un contrôleur de domaine Active Directory). Il est ensuite donné une confiance entre les autres sites (sites B & C) qui nécessitent une authentification via l'ADFS.

Lorsqu'un utilisateur tente d'accéder au site B dans son navigateur, le site redirige l'utilisateur vers le site Web du proxy ADFS (site A) qui demande son nom d'utilisateur et son mot de passe, les authentifie, renvoie un ensemble de cookies pour s'en souvenir et les redirige. retour au site B, accompagné d'un jeton d'accès.

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

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

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

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

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

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

  • Serveur ADFS
    Serveur qui se connecte aux informations d'identification, et a la configuration des revendications ainsi que les approbations. 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. Communique de nouveau à l'ADFS lors de la demande d'authentification. Généralement accessible au public.
109
Reaces