Реализация единого входа Single Sign On с помощью Active Directory Federation Services.

 При реализации DirSync с паролем пользователь обязан пройти аутентификацию для получения доступа к ресурсам. В случае с Единым Входом (SSO) аутентификация происходит с помощью служб федерации. В случае если доступ к ресурсам происходит с компьютера подключённого к домену, то аутентификация проходит в автоматическом режиме. Для реализации SSO необходимо реализовать сценарий DirSync. В случае использования сервера AD FS за NAT, на маршрутизаторе (в моём случае на двух) необходимо пробросить 443 порт на сервер AD FS. Служба федераций помимо использования доверенных сертификатов работает с самоподписанными сертификатми, а так же подписанными недоверенными центрами сертификации. В данно статье будет использоватся третий вариант с доменным центром сертификации.

 Используется следующая демонстрационная IT инфрастуктура, где сервер синхронизации и федераций ADFS1 находится за двумя NAT:

adfs00.png

 Для начала подготовим сертификат для сервера ADFS1. Для этого необходимо создать копию шаблона Computer, в котором указать "supply in request". Без этого параметра имя сертификата, которое будет использоваться для подключения к серверу AD FS из интернета, будет идентично FQDN сервера, а оно в свою очередь может быть не доступно из интернета. Особенно это актуально для доменов Active Directory с непубличными TLD. Возможно использовать Web Application Proxy, но этот случай не будет использоваться в моей статье.

cert1.png

cert2.png

cert3.png

 На сервере AD FS открываем оснастку Сертификаты, и выполняем запрос на новый сертификат. В запросе необходимо выбрать созданный шаблон и заполнить некоторые поля.

cert4.png

 Важным полем является Common Name. Именно оно определяет адрес подключения к серверу. Даже из локальной сети вы сможете подключится к серверу только по двум адресам: указанным в CN и localhost. Никакие другие адреса доступны не будут.

cert5.png

 Во время установки и настройки роли AD FS указываем созданный\купленный сертификат и учётную запись, под которой будет работать служба AD FS, если Служебная учётная запись не была создана.

adfs15.png

 Проверяем AD FS по ссылкам:

https://adfs1.exonix.ru/adfs/ls/IdpInitiatedSignon.aspx
https://localhost/adfs/ls/IdpInitiatedSignon.aspx
https://adfs1/adfs/ls/IdpInitiatedSignon.aspx
https://10.10.11.11/adfs/ls/IdpInitiatedSignon.aspx

 Работать будут только первые две. Пока я не выяснял почему веб-страница недоступна по другим адреса. Но самое главное, что работает первая ссылка, доступная из интернета.

adfs16.png

adfs17.png

 Далее подключаемся в PowerShell к Office 365 введя учётные данные администратора Office 365:

PS C:\> connect-msolservice

 Посмотрим федеративные домены:

PS C:\> Get-MsolFederationProperty -DomainName exonix.ru
Source : ADFS Server
ActiveClientSignInUrl : https://adfs1.exonix.ru/adfs/services/trust/2005/usernamemixed
FederationServiceDisplayName : AD FS
FederationServiceIdentifier : http://adfs1.exonix.ru/adfs/services/trust
FederationMetadataUrl : https://adfs1.exonix.ru/adfs/services/trust/mex
PassiveClientSignInUrl : https://adfs1.exonix.ru/adfs/ls/
PassiveClientSignOutUrl : https://adfs1.exonix.ru/adfs/ls/
TokenSigningCertificate : [Subject]
CN=ADFS Signing - adfs1.exonix.ru
[Issuer]
CN=ADFS Signing - adfs1.exonix.ru
[Serial Number]
343AA093579EA1B24762BCE2E0396D06
[Not Before]
14.05.2015 16:59:45
[Not After]
13.05.2016 16:59:45
[Thumbprint]
5A914A7D1FEF5A6FF43F9030862082CA194C3221
NextTokenSigningCertificate :
PreferredAuthenticationProtocol :
WARNING: The 'exonix.ru' domain does not exist.

 В первом случае ответил локальный сервер. Во втором случае домен не найден, т.к. домен exonix.ru в Office 365 не является федеративным. Последним шагом как раз и будет конвертация домена в федеративный:

PS C:\> Convert-MsolDomainToFederated -DomainName exonix.ru
Successfully updated 'exonix.ru' domain.

 А затем снова проверим домены:

PS C:\> Get-MsolFederationProperty -DomainName exonix.ru
Source : ADFS Server

ActiveClientSignInUrl : https://adfs1.exonix.ru/adfs/services/trust/2005/usernamemixed
FederationServiceDisplayName : AD FS
FederationServiceIdentifier : http://adfs1.exonix.ru/adfs/services/trust
FederationMetadataUrl : https://adfs1.exonix.ru/adfs/services/trust/mex
PassiveClientSignInUrl : https://adfs1.exonix.ru/adfs/ls/
PassiveClientSignOutUrl : https://adfs1.exonix.ru/adfs/ls/
TokenSigningCertificate : [Subject]
CN=ADFS Signing - adfs1.exonix.ru
[Issuer]
CN=ADFS Signing - adfs1.exonix.ru
[Serial Number]
343AA093579EA1B24762BCE2E0396D06
[Not Before]
14.05.2015 16:59:45
[Not After]
13.05.2016 16:59:45
[Thumbprint]
5A914A7D1FEF5A6FF43F9030862082CA194C3221
NextTokenSigningCertificate :
PreferredAuthenticationProtocol :
Source : Microsoft Office 365

ActiveClientSignInUrl : https://adfs1.exonix.ru/adfs/services/trust/2005/usernamemixed
FederationServiceDisplayName : BERLIN
FederationServiceIdentifier : http://adfs1.exonix.ru/adfs/services/trust
FederationMetadataUrl : https://adfs1.exonix.ru/adfs/services/trust/mex
PassiveClientSignInUrl : https://adfs1.exonix.ru/adfs/ls/
PassiveClientSignOutUrl : https://adfs1.exonix.ru/adfs/ls/
TokenSigningCertificate : [Subject]
CN=ADFS Signing - adfs1.exonix.ru
[Issuer]
CN=ADFS Signing - adfs1.exonix.ru
[Serial Number]
343AA093579EA1B24762BCE2E0396D06
[Not Before]
14.05.2015 16:59:45
[Not After]
13.05.2016 16:59:45
[Thumbprint]
5A914A7D1FEF5A6FF43F9030862082CA194C3221
NextTokenSigningCertificate :
PreferredAuthenticationProtocol : WsFed

 Если честно, я сам удивился, что настройка AD FS такая простая. Лишь немного повозился с сертификатом. На этом всё. Настройка сервера AD FS завершена. При попытке на странице входа в Office 365 пользователя перенаправит на сервер AD FS, где он должен ввести свои данные или они подставятся сами, если компьютер подключен к домену.

adfs18.png

14.05.2015