Co to jest ADFS (Active Directory Federation Services)?

77

Powiedziano mi, że nasza aplikacja PHP może wymagać uwierzytelnienia przy użyciu ADFS.

  1. Dla osób niebędących Microsoftem, czym jest ADFS?

  2. Czym różni się od takich rzeczy jak LDAP?

  3. Jak to działa? Jakie informacje byłyby zawarte w typowym żądaniu skierowanym do serwera ADFS? Czy jest przeznaczony zarówno do uwierzytelniania, jak i autoryzacji?

  4. Czy serwery ADFS są zazwyczaj dostępne z Internetu (podczas gdy korporacyjne kontrolery domen AD nie byłyby dostępne)?

Próbowałem przeczytać niektóre dokumenty Technet, ale jest pełen Microsoft Speak, który nie jest niezwykle pomocny.

Wikipedia jest lepsza (patrz poniżej), ale być może część społeczności ServerFault może wypełnić niektóre luki.

Usługi federacyjne w usłudze Active Directory (ADFS) to komponent oprogramowania opracowany przez firmę Microsoft, który można zainstalować w systemach operacyjnych Windows Server, aby zapewnić użytkownikom jednokrotny dostęp do systemów i aplikacji znajdujących się poza granicami organizacji. Wykorzystuje model autoryzacji kontroli dostępu oparty na oświadczeniach, aby zachować bezpieczeństwo aplikacji i wdrożyć tożsamość federacyjną.

Uwierzytelnianie oparte na oświadczeniach to proces uwierzytelniania użytkownika na podstawie zestawu oświadczeń dotyczących jego tożsamości zawartych w zaufanym tokenie.

W programie ADFS federacja tożsamości jest ustanawiana między dwiema organizacjami poprzez ustanowienie zaufania między dwiema dziedzinami bezpieczeństwa. Serwer federacyjny z jednej strony (strona Konta) uwierzytelnia użytkownika za pomocą standardowych środków w Usługach domenowych w usłudze Active Directory, a następnie wydaje token zawierający szereg oświadczeń o użytkowniku, w tym jego tożsamość. Z drugiej strony, po stronie zasobów, inny serwer federacyjny sprawdza token i wydaje inny token serwerom lokalnym w celu zaakceptowania deklarowanej tożsamości. Pozwala to systemowi zapewnić kontrolowany dostęp do swoich zasobów lub usług użytkownikowi, który należy do innej dziedziny bezpieczeństwa, bez konieczności uwierzytelniania użytkownika bezpośrednio w systemie i bez dzielenia przez oba systemy bazy danych tożsamości użytkowników lub haseł.

W praktyce takie podejście jest zazwyczaj postrzegane przez użytkownika w następujący sposób:

  1. Użytkownik loguje się na lokalnym komputerze (tak jak zwykle, gdy rozpoczyna pracę rano)
  2. Użytkownik musi uzyskać informacje na stronie ekstranetu firmy partnerskiej - na przykład, aby uzyskać informacje o cenach lub produkcie
  3. Użytkownik przechodzi do witryny ekstranetowej firmy partnerskiej - na przykład: http://example.com
  4. Witryna partnera nie wymaga teraz wpisywania hasła - zamiast tego poświadczenia użytkownika są przekazywane do witryny ekstranetu partnera za pomocą usług AD FS
  5. Użytkownik jest teraz zalogowany na stronie partnera i może wchodzić w interakcje ze stroną „zalogowany”

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

Simon East
źródło
Znalazłem te artykuły i ten film wideo pomocne w zapewnieniu przeglądu.
Simon East
Reaces zapewnił doskonałą odpowiedź. Jedyne dodatkowe informacje, które dodam, to to, że warto zrozumieć protokół WS-Federation i SAML (Security Assertion Markup Language), które są standardami implementowanymi przez ADFS. Oto kilka filmów, które uznałem za przydatne w zrozumieniu tych (dość złożonych) pojęć. Niestety zawierają tyle materiałów, że nie mogę ich tutaj zamieścić. ! [Miniatura wideo Zrozumienie SAML i rejestracji jednokrotnej 101 na YouTube] ( youtube.com/watch?v=gUmMcecHN9s ) [! [Miniatura wideo] (http
Simon East
Miałem również problemy ze zrozumieniem ADFS. Potrzebowałem wyjaśnienia od samego początku (nie jestem AD). To wideo, które jest zawarte w serii wymienionej w komentarzach tutaj, było dla mnie bardzo pomocne. W tym miejscu powinna rozpocząć się każda nowa osoba o zerowym doświadczeniu z programem ADFS, a następnie kontynuować pracę z resztą filmów z tej serii. Mam nadzieję, że to pomoże. youtube.com/…
Mauricio Zaragoza
1
Niestety, moderator usunął moją odpowiedź z pomocnymi filmami i nadał jej komentarz powyżej, ale teraz jest zepsuty. Denerwujący.
Simon East

Odpowiedzi:

97

Dla osób niebędących Microsoftem, czym jest ADFS?

ADFS to rozwiązanie firmy Microsoft do jednokrotnego logowania i uwierzytelniania internetowego.

Służy przede wszystkim do zapewnienia jednego zestawu poświadczeń, które umożliwiają dostęp do różnych witryn niekoniecznie hostowanych w tej samej domenie.

Czym różni się od takich rzeczy jak LDAP?

LDAP:

  • Komunikuje się za pomocą TCP / UDP na porcie 389 (lub porcie 636 dla LDAPS)
  • Zawiera polecenia wyszukiwania / pobierania / dodawania / usuwania / modyfikowania użytkowników, profili i innych pozycji katalogu
  • Nie może być wykonane bezpośrednio przez przeglądarkę internetową, jednak uwierzytelnianie HTTP może być przetłumaczone na LDAP przy użyciu takich rzeczy jak Apache mod_authnz_ldap.
  • W przypadku uwierzytelniania witryn internetowych podmiotów zewnętrznych wymaga podania nazwy użytkownika i hasła podmiotowi zewnętrznemu, co nie jest idealne ze względów bezpieczeństwa.
  • Jest bardziej otwartym standardem i ma wiele implementacji Linuksa.

ADFS:

  • Lepiej zaprojektowany dla Internetu, ponieważ komunikuje się przez standardowy HTTPS
  • Wykonuje bezpieczniejszy proces podobny (ale nie dokładny) do OAuth, w którym oryginalna nazwa użytkownika / hasło są dostarczane bezpośrednio do serwera ADFS organizacji (lub proxy, ale nie do strony trzeciej), która, jeśli jest poprawna, zwraca unikalny token, który może być używany do uzyskiwania dostępu do strony internetowej strony trzeciej.
  • Mimo że korzysta z niektórych otwartych standardów (HTTPS, SAML itp.), Jest specyficzny dla Microsoft i wymaga Internetowych usług informacyjnych (IIS), które działają tylko na serwerach Windows.

Zobacz także tę odpowiedź na ten temat.

Jak to działa? Jakie informacje byłyby zawarte w typowym żądaniu skierowanym do serwera ADFS? Czy jest przeznaczony zarówno do uwierzytelniania, jak i autoryzacji?

Działa poprzez posiadanie pojedynczej lokacji (lokacja A), która obsługuje serwery proxy ADFS / ADFS, która ma dostęp do poświadczeń (zwykle poprzez komunikację z kontrolerem domeny Active Directory). Następnie uzyskuje się zaufanie między innymi stronami (strony B i C), które wymagają uwierzytelnienia za pośrednictwem ADFS.

Gdy użytkownik próbuje uzyskać dostęp do strony B w swojej przeglądarce, strona przekierowuje użytkownika do strony internetowej serwera proxy ADFS (strona A), która pyta o nazwę użytkownika i hasło, uwierzytelnia je, zwraca zestaw plików cookie do zapamiętania i przekierowuje je powrót do strony B wraz z tokenem dostępu.

Jeśli użytkownik następnie spróbuje odwiedzić witrynę C, zostanie również przekierowany do witryny A w celu uwierzytelnienia ze strony internetowej serwera proxy ADFS. Jeśli istnieją odpowiednie pliki cookie, użytkownik nie będzie musiał ponownie wpisywać hasła, ale zostanie natychmiast przekierowany z powrotem do witryny C za pomocą tokena.

W systemie ADFS można skonfigurować określone oświadczenia (lub uprawnienia) dla użytkownika w celu autoryzacji. Może więc służyć obu rolom. (Zwróć uwagę na różnicę między uwierzytelnianiem a autoryzacją ).

Niektóre osoby wolą nie używać go do autoryzacji, ale zamiast tego zachowują zarządzanie uprawnieniami w witrynie internetowej innej firmy. Oczywistym minusem jest to, że obie witryny A i B muszą śledzić konta użytkowników, podczas gdy w scenariuszu, w którym ADFS obsługuje oba, tylko ADFS musi być świadomy użytkowników.

Czy serwery ADFS są zazwyczaj dostępne z Internetu (podczas gdy korporacyjne kontrolery domen AD nie byłyby dostępne)?

Tak, prawie zawsze. ADFS opiera się na założeniu, że będzie on używany przede wszystkim do uwierzytelniania witryn internetowych. I jest zbudowany wokół IIS.

Witryna serwera proxy ADFS jest zwykle dostępna z Internetu. Jednak sam ADFS nie jest. ADFS jest zasadniczo innym serwerem niż ADFS-proxy.

  • Serwer ADFS Server,
    który łączy się z poświadczeniami i ma konfigurację oświadczeń, a także relacje zaufania. Ogólnie niedostępne publicznie.
  • Serwer proxy usługi ADFS,
    który obsługuje instancję IIS, która ma strony logowania do witryn wymagających uwierzytelnienia. Komunikuje się z powrotem do ADFS, gdy wymaga uwierzytelnienia. Ogólnie dostępny publicznie.
Reaces
źródło
11
Wyjaśnienie: Serwer proxy ADFS musi działać w IIS (Windows). Jednak witryny klienckie (B & C) mogą obsługiwać dowolny system operacyjny i serwer WWW, w tym Linux.
Olli,
Bardzo pomocne, właśnie utworzyłem konto, aby to poprawić.
Juan
Rozszerzając odpowiedź @Reaces, ADFS 4.0 w systemie Windows Server 2016 w pełni obsługuje OAuth / OpenId Connect.
Mohammad Reza Sadreddini
@MohammadRezaSadreddini Możesz edytować odpowiedź, aby ją rozwinąć.
Reaces