Что такое ADFS (службы федерации Active Directory)?

77

Поэтому мне сказали, что нашему PHP-приложению может потребоваться поддержка аутентификации с использованием ADFS.

  1. Что такое ADFS для человека не из Microsoft?

  2. Как это отличается от таких вещей, как LDAP?

  3. Как это работает? Какого рода информация будет включена в типичный запрос к серверу ADFS? Он предназначен как для аутентификации, так и для авторизации?

  4. Доступны ли серверы ADFS из Интернета (тогда как корпоративные контроллеры домена AD не будут)?

Я попытался прочитать некоторые из документов Technet, но в них много разговоров с Microsoft, что не очень полезно.

Википедия лучше (см. Ниже), но, возможно, некоторые из сообщества ServerFault могут заполнить некоторые пробелы.

Службы федерации Active Directory (ADFS) - это программный компонент, разработанный Microsoft, который можно установить в операционных системах Windows Server, чтобы предоставить пользователям единый вход в системы и приложения, расположенные за пределами организации. Он использует модель авторизации управления доступом на основе утверждений для обеспечения безопасности приложений и реализации федеративной идентификации.

Аутентификация на основе утверждений - это процесс аутентификации пользователя на основе набора утверждений о его идентичности, содержащихся в доверенном токене.

В ADFS федерация удостоверений устанавливается между двумя организациями путем установления доверия между двумя областями безопасности. Сервер федерации с одной стороны (сторона Учетных записей) аутентифицирует пользователя с помощью стандартных средств в доменных службах Active Directory, а затем выдает токен, содержащий серию утверждений о пользователе, включая его удостоверение. С другой стороны, со стороны Ресурсов, другой сервер федерации проверяет токен и выдает другой токен для локальных серверов, чтобы принять заявленную идентификацию. Это позволяет системе предоставлять контролируемый доступ к ее ресурсам или услугам пользователю, который принадлежит к другой области безопасности, не требуя от пользователя аутентификации непосредственно в системе, и без того, чтобы две системы совместно использовали базу данных идентификаторов пользователей или паролей.

На практике этот подход обычно воспринимается пользователем следующим образом:

  1. Пользователь входит в свой локальный компьютер (как обычно, когда он начинает работать утром)
  2. Пользователю необходимо получить информацию на веб-сайте экстрасети компании-партнера, например, для получения информации о ценах или сведениях о продукте.
  3. Пользователь переходит на сайт экстрасети компании-партнера - например, http://example.com.
  4. Веб-сайт партнера теперь не требует ввода пароля - вместо этого учетные данные пользователя передаются на сайт экстрасети партнера с помощью AD FS.
  5. Теперь пользователь вошел на сайт партнера и может взаимодействовать с сайтом, вошедшим в систему.

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

Саймон Ист
источник
Я нашел эти статьи и это видео полезным в предоставлении обзора.
Саймон Ист
Реас предоставил отличный ответ. Единственная дополнительная информация, которую я хотел бы добавить, это то, что она может быть полезна для понимания протокола WS-Federation и языка разметки безопасности (SAML), которые являются стандартами, которые реализует ADFS. Вот несколько видео, которые я нашел полезными для понимания этих (довольно сложных) концепций. К сожалению, они содержат так много материала, что я не могу включить его сюда. ! [Миниатюра видео Общие сведения о SAML и единой регистрации 101 на YouTube] ( youtube.com/watch?v=gUmMcecHN9s ) [! [Миниатюра видео] (http
Simon East
У меня также были проблемы с пониманием ADFS. Мне нужно было объяснение с самого начала (я не человек AD). Это видео, которое входит в серию, упомянутую в комментариях здесь, было очень полезно для меня. Это то место, где должен начинать любой новый человек с нулевым опытом работы с ADFS, а затем продолжить работу с остальными видео в этой серии. Я надеюсь, что это помогает. youtube.com/…
Маурисио Сарагоса,
1
Извините, модератор удалил мой ответ с полезными видео и оставил комментарий выше, но теперь он не работает. Разочарование.
Саймон Ист

Ответы:

98

Что такое ADFS для человека не из Microsoft?

ADFS - это решение Microsoft для единого входа и аутентификации через Интернет.

Он используется главным образом для предоставления единого набора учетных данных, которые могут получить доступ к множеству сайтов, не обязательно размещенных в одном домене.

Как это отличается от таких вещей, как LDAP?

LDAP:

  • Связь через TCP / UDP через порт 389 (или порт 636 для LDAPS)
  • Содержит команды для поиска / извлечения / добавления / удаления / изменения пользователей, профилей и других записей каталога
  • Может не быть выполнено непосредственно с помощью веб - браузера, однако аутентификация HTTP может быть переведена на LDAP , используя такие вещи , как в Apache mod_authnz_ldap.
  • При использовании для аутентификации на стороннем веб-сайте требует, чтобы имя пользователя и пароль были предоставлены третьей стороне, что не идеально для безопасности.
  • Это более открытый стандарт и имеет множество реализаций Linux.

ADFS:

  • Лучше разработан для Интернета, поскольку он общается по стандартному HTTPS
  • Следует более безопасному процессу, аналогичному (но не точному) OAuth, где исходное имя пользователя / пароль предоставляются непосредственно серверу ADFS организации (или прокси-серверу, но не третьей стороне), который, если он действителен, возвращает уникальный токен, который может быть используется для доступа к стороннему веб-сайту.
  • Хотя он использует некоторые открытые стандарты (HTTPS, SAML и т. Д.), Он специфичен для Microsoft и требует информационных служб Интернета (IIS), которые работают только на серверах Windows.

Смотрите также этот ответ по этому вопросу.

Как это работает? Какого рода информация будет включена в типичный запрос к серверу ADFS? Он предназначен как для аутентификации, так и для авторизации?

Он работает, имея один сайт (сайт A), на котором размещены прокси-серверы ADFS / ADFS, который имеет доступ к учетным данным (обычно путем связи с контроллером домена Active Directory). Затем ему предоставляется доверие между другими сайтами (сайтами B & C), которые требуют аутентификации через ADFS.

Когда пользователь пытается получить доступ к сайту B в своем браузере, сайт перенаправляет пользователя на веб-сайт ADFS-прокси (сайт A), который запрашивает их имя пользователя и пароль, аутентифицирует их, возвращает набор файлов cookie для их запоминания и перенаправляет их вернуться на сайт B вместе с токеном доступа.

Если пользователь затем попытается посетить сайт C, он также будет перенаправлен на сайт A для проверки подлинности с веб-сайта ADFS-прокси. Если правильные файлы cookie существуют, пользователю не нужно будет снова вводить свой пароль, но он сразу же перенаправляется обратно на сайт C с токеном.

ADFS может быть настроен с конкретными утверждениями (или разрешениями) для пользователя в целях авторизации. Так что он может выполнять обе роли. (Обратите внимание на разницу между аутентификацией и авторизацией .)

Некоторые люди предпочитают не использовать его для авторизации, а вместо этого сохраняют управление разрешениями на стороннем веб-сайте. Очевидным недостатком является то, что оба сайта A & B должны отслеживать учетные записи пользователей, в то время как в сценарии, где ADFS обрабатывает оба, только ADFS должна знать о пользователях.

Доступны ли серверы ADFS из Интернета (тогда как корпоративные контроллеры домена AD не будут)?

Да почти всегда ADFS основана на том, что она будет в основном использоваться для аутентификации на сайте. И построен вокруг IIS.

Сайт ADFS-прокси обычно доступен из Интернета. Однако сама ADFS нет. ADFS обычно является отдельным сервером от ADFS-прокси.

  • Сервер ADFS,
    который связывается с учетными данными и имеет конфигурацию утверждений, а также доверительные отношения. Как правило, не общедоступно.
  • Прокси-сервер ADFS, на
    котором размещен экземпляр IIS, на котором имеются страницы входа для веб-сайтов, требующих проверки подлинности. Связывается обратно с ADFS, когда требуется аутентификация. Общедоступный.
Reaces
источник
11
Для пояснения: ADFS Proxy Server должен работать на IIS (Windows). Однако клиентские веб-сайты (B & C) могут работать с любой ОС и веб-сервером, включая Linux.
Олли
Очень полезно, только что создал учетную запись для этого.
Хуан
Развернув ответ @Reaces, ADFS 4.0 в Windows Server 2016 полностью поддерживает OAuth / OpenId Connect.
Мохаммед Реза Садреддини
@MohammadRezaSadreddini Не стесняйтесь редактировать ответ, чтобы расширить его.
Reaces