Was ist ADFS (Active Directory Federation Services)?

Mir wurde gesagt, dass unsere PHP-Anwendung möglicherweise die Authentifizierung über ADFS unterstützen muss.

Das ist eine gute Idee;

  1. Was ist ADFS für einen Nicht-Microsoftianer?

  2. Wie unterscheidet es sich von Dingen wie LDAP?

  3. Wie funktioniert es? Welche Art von Informationen sind in einer typischen Anfrage an einen ADFS-Server enthalten? Ist es sowohl für die Authentifizierung als auch für die Autorisierung konzipiert?

  4. Sind ADFS-Server in der Regel über das Internet zugänglich (während AD-Domänencontroller von Unternehmen dies nicht sind)?

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

Wikipedia ist besser (siehe unten), aber vielleicht kann jemand aus der ServerFault-Community einige der Lücken füllen.

Active Directory Federation Services (ADFS)** ist eine von Microsoft entwickelte Softwarekomponente, die auf Windows Server-Betriebssystemen installiert werden kann, um Benutzern einen einmaligen Anmeldezugriff auf Systeme und Anwendungen zu ermöglichen, die sich über Unternehmensgrenzen hinweg befinden. Sie verwendet ein auf Ansprüchen basierendes Zugriffskontroll-Autorisierungsmodell, um die Anwendungssicherheit zu gewährleisten und eine föderierte Identität zu implementieren.

Bei der behauptungsbasierten Authentifizierung wird ein Benutzer auf der Grundlage einer Reihe von Behauptungen über seine Identität authentifiziert, die in einem vertrauenswürdigen Token enthalten sind.

In ADFS wird ein Identitätsverbund zwischen zwei Organisationen eingerichtet, indem Vertrauen zwischen zwei Sicherheitsbereichen aufgebaut wird. Ein Föderationsserver auf der einen Seite (die Kontenseite) authentifiziert den Benutzer mit den Standardmitteln der Active Directory-Domänendienste und gibt dann ein Token aus, das eine Reihe von Aussagen über den Benutzer, einschließlich seiner Identität, enthält. Auf der anderen Seite, der Ressourcenseite, validiert ein anderer Verbundserver das Token und gibt ein weiteres Token für die lokalen Server aus, um die behauptete Identität zu akzeptieren. Auf diese Weise kann ein System einem Benutzer, der einem anderen Sicherheitsbereich angehört, kontrollierten Zugang zu seinen Ressourcen oder Diensten gewähren, ohne dass sich der Benutzer direkt beim System authentifizieren muss und ohne dass die beiden Systeme eine Datenbank mit Benutzeridentitäten oder Passwörtern gemeinsam nutzen.

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

  1. der Benutzer meldet sich an seinem lokalen PC an (wie er es typischerweise tun würde, 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-Website des Partnerunternehmens - zum Beispiel: http://example.com
  4. auf der Partner-Website muss nun kein Kennwort mehr eingegeben werden - stattdessen werden die Anmeldedaten des Benutzers über AD FS an die Extranet-Site des Partnerunternehmens weitergeleitet
  5. der Benutzer ist nun bei der Partner-Website angemeldet und kann mit der Website interagieren;

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

Lösung

Was ist ADFS für einen Nicht-Microsoft-Nutzer?

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

Sie wird in erster Linie verwendet, um einen einzigen Satz von Anmeldedaten bereitzustellen, mit denen auf eine Vielzahl von Websites zugegriffen werden kann, die nicht unbedingt in derselben Domäne gehostet werden.

Worin besteht der Unterschied zu LDAP?

LDAP:

  • Kommuniziert über TCP/UDP auf Port 389 (oder Port 636 für LDAPS)
  • Enthält Befehle zum Suchen/Abrufen/Einfügen/Löschen/Ändern von Benutzern, Profilen und anderen Verzeichniseinträgen
  • Kann nicht direkt von einem Webbrowser ausgeführt werden, allerdings kann die HTTP-Authentifizierung mit Mitteln wie Apache's mod_authnz_ldap in LDAP übersetzt werden.
  • Wenn es für die Authentifizierung von Websites Dritter verwendet wird, müssen Benutzername und Passwort an den Dritten weitergegeben werden, was nicht ideal für die Sicherheit ist.
  • Ist eher ein offener Standard und hat zahlreiche Linux-Implementierungen.

ADFS:

  • Ist besser für das Web geeignet, da es über Standard-HTTPS kommuniziert.
  • Verfolgt einen sichereren Prozess ähnlich (aber nicht exakt) wie OAuth, bei dem der ursprüngliche Benutzername/das ursprüngliche Passwort direkt an den ADFS-Server der Organisation (oder einen Proxy, aber nicht an den Drittanbieter) übermittelt wird, der, wenn er gültig ist, ein eindeutiges Token zurückgibt, das für den Zugriff auf eine Drittanbieter-Website verwendet werden kann.
  • Obwohl es einige offene Standards (HTTPS, SAML usw.) nutzt, ist es Microsoft-spezifisch und erfordert Internet Information Services (IIS), die nur auf Windows-Servern laufen.

Siehe auch diese Antwort zu diesem Thema.

Wie funktioniert es? Welche Art von Informationen sind in einer typischen Anfrage an einen ADFS-Server enthalten? Ist es sowohl für die Authentifizierung als auch für die Autorisierung gedacht?

Es funktioniert mit einem einzigen Standort (Standort A), der die ADFS/ADFS-Proxyserver hostet und Zugang zu den Anmeldeinformationen hat (normalerweise durch Kommunikation mit einem Active Directory Domain Controller). Es wird dann eine Vertrauensstellung zwischen anderen Standorten (Standort B & C) hergestellt, die eine Authentifizierung über das ADFS erfordern.

Wenn ein Benutzer versucht, in seinem Browser auf die Website B zuzugreifen, leitet die Website den Benutzer an die ADFS-Proxy-Website (Website A) weiter, die ihn nach seinem Benutzernamen und seinem Kennwort fragt, ihn authentifiziert, eine Reihe von Cookies zur Erinnerung an ihn zurückgibt und ihn zusammen mit einem Zugriffstoken zurück an die Website B weiterleitet.

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

Der ADFS kann mit spezifischen Ansprüchen (oder Berechtigungen) für den Benutzer zu Autorisierungszwecken konfiguriert werden. Es kann also beide Funktionen erfüllen. (Beachten Sie den Unterschied zwischen Authentifizierung und Autorisierung).

Manche Leute ziehen es vor, sie nicht für die Autorisierung zu verwenden, sondern die Verwaltung der Berechtigungen auf der Website des Drittanbieters zu belassen. Der offensichtliche Nachteil ist, dass sowohl Site A als auch Site B die Benutzerkonten im Auge behalten müssen, während in dem Szenario, in dem ADFS beide verwaltet, nur das ADFS die Benutzer kennen muss.

Sind ADFS-Server in der Regel über das Internet zugänglich (während AD-Domänencontroller von Unternehmen dies nicht sind)?

Ja, fast immer. ADFS basiert auf der Vorstellung, dass es in erster Linie für die Authentifizierung von Websites verwendet wird. Und ist um IIS herum aufgebaut.

Die ADFS-Proxy-Site ist diejenige, die normalerweise vom Internet aus zugänglich ist. Der ADFS selbst ist es jedoch nicht. Der ADFS ist im Allgemeinen ein vom ADFS-Proxy getrennter Server.

  • ADFS-Server Server, der eine Verbindung zu den Anmeldeinformationen herstellt und über die Anspruchskonfiguration sowie über die Vertrauensstellungen verfügt. In der Regel nicht öffentlich zugänglich.
  • ADFS-Proxy-Server Server, der die IIS-Instanz hostet, die die Anmeldeseiten für die Websites enthält, die eine Authentifizierung erfordern. Kommuniziert zurück zum ADFS, wenn eine Authentifizierung erforderlich ist. In der Regel öffentlich zugänglich.
Kommentare (4)