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.
-
Pour un non-Microsoft, qu'est-ce que l'ADFS ?
-
En quoi diffère-t-il d'éléments comme LDAP ?
-
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 ?
-
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’ai essayé de lire certains documents de Technet, mais ils sont remplis d’un langage Microsoft qui n’est 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 :
- l'utilisateur se connecte à son PC local (comme il le ferait normalement en commençant à travailler le matin).
- l’utilisateur a besoin d’obtenir des informations sur le site extranet d’une entreprise partenaire, par exemple pour obtenir des informations sur les prix ou les produits.
- l'utilisateur se rend sur le site extranet de l'entreprise partenaire - par exemple : http://example.com.
- 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
- l'utilisateur est maintenant connecté au site Web du partenaire et peut interagir avec le site Web en étant "connecté" ;
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:
mod_authnz_ldap
d'Apache.ADFS:
Voir également [cette réponse][1] sur le sujet.
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 & ; 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 & ; 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.
[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