Was ist ADFS (Active Directory Federation Services)?


77

Daher wurde mir mitgeteilt, dass unsere PHP-Anwendung möglicherweise die Authentifizierung mithilfe von ADFS unterstützen muss.

  1. Was ist ADFS für eine Person, die nicht von Microsoft stammt?

  2. Wie unterscheidet es sich von Dingen wie LDAP?

  3. Wie funktioniert es? Welche Art von Informationen würde eine typische Anfrage an einen ADFS-Server enthalten? Ist es sowohl für die Authentifizierung als auch für die Autorisierung ausgelegt?

  4. Sind ADFS-Server normalerweise über das Internet erreichbar (wohingegen AD-Domänencontroller von Unternehmen dies nicht tun würden)?

Ich habe versucht, einige der Technet-Dokumente zu lesen, aber es ist voller Microsoft-Sprache, die nicht sehr hilfreich ist.

Wikipedia ist besser (siehe unten), aber möglicherweise kann ein Teil der ServerFault-Community einige Lücken schließen.

Active Directory Federation Services (ADFS) ist eine von Microsoft entwickelte Softwarekomponente, die auf Windows Server-Betriebssystemen installiert werden kann, um Benutzern den Single Sign-On-Zugriff auf Systeme und Anwendungen über Unternehmensgrenzen hinweg zu ermöglichen. Es verwendet ein anspruchsbasiertes Zugriffssteuerungsautorisierungsmodell, um die Anwendungssicherheit zu gewährleisten und die Verbundidentität zu implementieren.

Anspruchsbasierte Authentifizierung ist der Prozess der Authentifizierung eines Benutzers basierend auf einer Reihe von Ansprüchen bezüglich seiner Identität, die in einem vertrauenswürdigen Token enthalten sind.

In ADFS wird ein Identitätsverbund zwischen zwei Organisationen hergestellt, indem eine Vertrauensstellung zwischen zwei Sicherheitsbereichen hergestellt wird. Ein Verbundserver auf einer Seite (der Kontoseite) authentifiziert den Benutzer über die Standardmittel in Active Directory-Domänendiensten und stellt dann ein Token aus, das eine Reihe von Ansprüchen über den Benutzer enthält, einschließlich seiner Identität. Auf der anderen Seite, der Ressourcenseite, überprüft ein anderer Verbundserver das Token und gibt ein weiteres Token aus, damit die lokalen Server die beanspruchte Identität akzeptieren. Auf diese Weise kann ein System einem Benutzer, der zu einem anderen Sicherheitsbereich gehört, einen kontrollierten Zugriff auf seine Ressourcen oder Dienste gewähren, ohne dass der Benutzer sich direkt beim System authentifizieren muss und ohne dass die beiden Systeme eine Datenbank mit Benutzeridentitäten oder Kennwörtern gemeinsam nutzen.

In der Praxis wird dieser Ansatz vom Benutzer typischerweise wie folgt wahrgenommen:

  1. Der Benutzer meldet sich bei seinem lokalen PC an (wie es normalerweise der Fall ist, wenn er morgens mit der Arbeit beginnt).
  2. Der Benutzer muss Informationen auf der Extranet-Website eines Partnerunternehmens abrufen, z. B. Preise oder Produktdetails
  3. Der Benutzer navigiert zur Extranet-Site des Partnerunternehmens, zum Beispiel: http://example.com
  4. Für die Partnerwebsite muss jetzt kein Kennwort mehr eingegeben werden. Stattdessen werden die Benutzeranmeldeinformationen mithilfe von AD FS an die Partner-Extranetsite übergeben
  5. Der Benutzer ist jetzt auf der Partner-Website angemeldet und kann mit der Website "angemeldet" interagieren.

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


Ich fand diese Artikel und dieses Video hilfreich, um einen Überblick zu geben.
Simon East

Die Reaktionen lieferten eine ausgezeichnete Antwort. Die einzige zusätzliche Information, die ich hinzufügen möchte, ist, dass es sich lohnt, das WS-Federation-Protokoll und die Security Assertion Markup Language (SAML) zu verstehen, die die Standards sind, die ADFS implementiert. Hier sind einige Videos, die ich zum Verständnis dieser (recht komplexen) Konzepte nützlich fand. Leider enthalten sie so viel Material, dass ich es hier nicht aufnehmen kann. ! [Vorschaubild des Videos Grundlegendes zu SAML und Single Sign-On 101 auf YouTube] ( youtube.com/watch?v=gUmMcecHN9s ) [! [Vorschaubild des Videos] (http
Simon East

Ich hatte auch Probleme, ADFS zu verstehen. Ich brauchte von Anfang an eine Erklärung (ich bin keine AD-Person). Dieses Video, das in der Serie enthalten ist, die in den Kommentaren hier erwähnt wird, war für mich sehr hilfreich. Hier sollte jede neue Person ohne Erfahrung mit ADFS beginnen und dann mit den restlichen Videos der Serie fortfahren. Ich hoffe, es hilft. youtube.com/…
Mauricio Zaragoza

1
Sorry Leute, ein Moderator hat meine Antwort mit den hilfreichen Videos gelöscht und oben einen Kommentar abgegeben, aber das ist jetzt kaputt. Frustrierend.
Simon East

Antworten:


97

Was ist ADFS für eine Person, die nicht von Microsoft stammt?

ADFS ist die Microsoft-Lösung für Single Sign On und webbasierte Authentifizierung.

Es wird hauptsächlich verwendet, um einen einzelnen Satz von Anmeldeinformationen bereitzustellen, mit denen auf eine Vielzahl von Websites zugegriffen werden kann, die nicht unbedingt in derselben Domäne gehostet werden.

Wie unterscheidet es sich von Dingen wie LDAP?

LDAP:

  • Kommuniziert über TCP / UDP an Port 389 (oder Port 636 für LDAPS)
  • Enthält Befehle zum Suchen / Abrufen / Hinzufügen / Löschen / Ändern von Benutzern, Profilen und anderen Verzeichniseinträgen
  • Kann nicht direkt von einem Webbrowser ausgeführt werden, die HTTP-Authentifizierung kann jedoch mit Dingen wie der von Apache in LDAP übersetzt werden mod_authnz_ldap.
  • Bei Verwendung für die Website-Authentifizierung von Drittanbietern müssen dem Drittanbieter Benutzername und Kennwort zur Verfügung gestellt werden. Dies ist aus Sicherheitsgründen nicht ideal.
  • Ist eher ein offener Standard und hat zahlreiche Linux-Implementierungen.

ADFS:

  • Besser für das Web konzipiert, da es über Standard-HTTPS kommuniziert
  • Verfolgt einen sichereren Prozess, der OAuth ähnelt (aber nicht genau ist), wobei der ursprüngliche Benutzername / das ursprüngliche Kennwort direkt dem ADFS-Server der Organisation (oder einem Proxy, aber nicht dem Drittanbieter) bereitgestellt wird, der , falls gültig, ein eindeutiges Token zurückgibt, das sein kann wird verwendet, um auf eine Website eines Drittanbieters zuzugreifen.
  • Obwohl es einige offene Standards (HTTPS, SAML usw.) verwendet, ist es Microsoft-spezifisch und erfordert Internetinformationsdienste (IIS), die nur auf Windows-Servern ausgeführt werden.

Siehe auch diese Antwort zum Thema.

Wie funktioniert es? Welche Art von Informationen würde eine typische Anfrage an einen ADFS-Server enthalten? Ist es sowohl für die Authentifizierung als auch für die Autorisierung ausgelegt?

Es funktioniert, indem ein einzelner Standort (Standort A) die ADFS / ADFS-Proxyserver hostet, die Zugriff auf die Anmeldeinformationen haben (normalerweise durch Kommunikation mit einem Active Directory-Domänencontroller). Anschließend wird eine Vertrauensstellung zwischen anderen Standorten (Standort B und C) eingerichtet, für die eine Authentifizierung über ADFS erforderlich ist.

Wenn ein Benutzer versucht, in seinem Browser auf Site B zuzugreifen, leitet die Site den Benutzer auf die ADFS-Proxy-Website (Site A) weiter, auf der er seinen Benutzernamen und sein Kennwort abfragt, diese authentifiziert, eine Reihe von Cookies zurückgibt, um sich an sie zu erinnern, und sie weiterleitet Zurück zur Site B, zusammen mit einem Zugriffstoken.

Wenn der Benutzer dann versucht, Site C zu besuchen, wird er auch zur Authentifizierung von der ADFS-Proxy-Website zu Site A umgeleitet. Wenn die richtigen Cookies vorhanden sind, muss der Benutzer sein Kennwort nicht erneut eingeben, sondern wird sofort mit einem Token zurück zu Site C geleitet.

Das ADFS kann zu Autorisierungszwecken mit bestimmten Ansprüchen (oder Berechtigungen) für den Benutzer konfiguriert werden. Es kann also beide Rollen übernehmen. (Beachten Sie den Unterschied zwischen Authentifizierung und Autorisierung .)

Einige Leute bevorzugen es, es nicht für die Autorisierung zu verwenden, sondern behalten die Berechtigungsverwaltung auf der Website eines Drittanbieters bei. Der offensichtliche Nachteil ist, dass sowohl Standort A als auch Standort B die Benutzerkonten überwachen müssen, während in dem Szenario, in dem ADFS beide verarbeitet, nur das ADFS die Benutzer berücksichtigen muss.

Sind ADFS-Server normalerweise über das Internet erreichbar (wohingegen AD-Domänencontroller von Unternehmen dies nicht tun würden)?

Ja, fast immer. ADFS basiert auf der Vorstellung, dass es hauptsächlich für die Website-Authentifizierung verwendet wird. Und ist rund um IIS aufgebaut.

Die ADFS-Proxy-Site ist diejenige, auf die normalerweise über das Internet zugegriffen werden kann. Das ADFS selbst ist dies jedoch nicht. Das ADFS ist in der Regel ein vom ADFS-Proxy getrennter Server.

  • ADFS-Server
    Server, der eine Verknüpfung zu den Anmeldeinformationen herstellt und über die Anspruchskonfiguration sowie die Vertrauensstellungen verfügt. Im Allgemeinen nicht öffentlich zugänglich.
  • ADFS-Proxyserver Server
    , auf dem die IIS-Instanz mit den Anmeldeseiten für die Websites gehostet wird, für die eine Authentifizierung erforderlich ist. Kommuniziert zurück zum ADFS, wenn eine Authentifizierung erforderlich ist. Allgemein öffentlich zugänglich.

11
Zur Verdeutlichung: ADFS-Proxyserver muss unter IIS (Windows) ausgeführt werden. Auf Client-Websites (B & C) können jedoch alle Betriebssysteme und Webserver einschließlich Linux ausgeführt werden.
Olli

Sehr hilfreich, habe gerade ein Konto erstellt, um dies zu überprüfen.
Juan

Als Antwort auf @Reaces unterstützt ADFS 4.0 unter Windows Server 2016 OAuth / OpenId Connect vollständig.
Mohammad Reza Sadreddini

@MohammadRezaSadreddini Fühlen Sie sich frei, die Antwort zu bearbeiten, um sie zu erweitern.
Reagiert
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.