Интеграция с ADFS SSO

Статья по теме (основные моменты и описание параметров здесь):

 


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


 

Интеграция ADFS SSO c HelpDeskEddy

  • Подключить SSO интеграцию (добавить SSO соединение) возможно в разделе Управление -> Безопасность/Авторизация -> Единый вход в систему (SSO)
  • Должна быть установлена и настроена служба ADFS


Настройки на стороне ADFS:

1 - Запускаем оснастку ADFS

2 - Переходим к "Отношения доверия проверяющей стороны" и запускаем мастер добавления:

На пункте выбора источника данных выбираем пункт 1 (импорт данных о проверяющей стороне, опубликованных в интернете или локальной сети):


И подставляем в него metadata (Audience EntityID) из созданного SSO соединения в HDE:

И благодаря метаданным информация о соединении со стороны HDE подтянутся в ADFS.


Возможные ошибки:

Они связаны с тем, что ADFS не может установить HTTPS-соединение с внешним сайтом.


В таком случае можно воспользоваться (импорт данных о проверяющей стороне из файла):
Для этого необходимо открыть Audience EntityID и скачать XML метадаты:



На пункте - Выбрать политику управление доступом выбираем - Разрешение для каждого:


В остальном жмем далее, после завершения необходимо добавить правила преобразования выдачи, для только что созданной политики отношения доверия:
 


Выбираем шаблоны правила "Отправка утверждений с помощью настраиваемого правила":


Названия правил не влияют на работоспособность. 
Важна их последовательность и что правила разделены на 2 правила:

1 правило:

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = ";mail;{0}", param = c.Value);

2 правило:

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"]
=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress");

 

Заполнение параметров на стороне HDE:

В службе ADFS используется 3 сертификата. 
Первый создается для работы службы, 2 и 3 добавляет сама служба.

Третий по списку сертификат нам нужен для указания в SSO HDE:
Копируем его в формате Base-64 


После переносим его в поле X.509 Certificate:


Остальные параметры должны быть аналогичными и меняться будет только домен:

 

Issuer URL - https://domain/adfs/services/trust

SAML 2.0 Endpoint (HTTP) - https://domain/adfs/ls

SLO Endpoint (HTTP) - https://domain/adfs/ls/?wa=wsignout1.0

 

Возможные ошибки:

1)

Error: invalid_response.; Reason: Invalid issuer in the Assertion/Response (expected 'https://adfs.corp.local/adfs/services/trust', got 'http://adfs.corp.local/adfs/services/trust').; Not authenticated


Необходимо изменить Issuer URL с https на http:
 

2)
 

Error: invalid_response.; Reason: The status code of the Response was not Success, was Requester -> urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy.; Not authenticated


Данная ошибка означает что у пользователя в AD не заполнено поле "E-mail" , необходимо перейти в "Пользователи и компьютеры AD" (dsa.msc) и добавить почту пользователю.
 


После сохранения всех настроек войти в систему через ADFS SSO можно на странице входа через отдельную кнопку входа:
 

Настройка маппинга:

Есть 4 атрибута для передачи значений в систему:

   custom_group_id - многозначный атрибут для передачи типа пользователя в систему;
   custom_departments_ids - многозначный атрибут для передачи доступа к департаментам пользователю;
   organization - атрибут передающий организацию пользователю;
   name - атрибут, передающий полное имя пользователю;
   phone - атрибут, передающий телефон;


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

1) Необходимо создать нужные значения для передачи их пользователю в AD на стороне HDE:

1.1) Создаем значения для групп:
 


1.2) Создаем значения для департаментов:
 

 2) Указываем данные значения у юзера в атрибутах на стороне AD

2.1) Переходим в "Пользователи и компьютеры AD" и задаем в пустых атрибутах значения настроенные в HDE:
Для примера я взял атрибуты:

  • employeeType - для передачи групп
  • department - для передачи департамента
  • displayName - для передачи имени


2.2) Создаем правило в AD FS для передачи атрибутов пользователя в HDE:
Шаблон правила "Отправка атрибутов LDAP как утверждений":
 


После необходимо войти в систему пользователем с указанными значениями в атрибутах.
Также в журнале лога SSO отобразится следующая запись после входа:
 


Также в карточке пользователя отображается заданная информация из атрибутов: