Введение

В корпоративной среде пользователи используют, как правило несколько приложений. И в каждом приложении в корпоративной среде необходимо аутентифицироваться. Конечно, можно создавать для каждого приложения свою учетную запись. Но такой подход неудобен и для администраторов системы и для пользователей. Гораздо удобнее входить в приложение под пользователем, который уже аутентифицирован в операционной системе. Для пользователей в домене Windows - таким решением является протокол Kerberos. В текущей статье мы настроим Kerberos аутентификацию в OpenAM. OpenAM - проект для управление аутентификацией с открытым исходным кодом.

Предварительные условия

Учетные записи пользователей хранятся в Active Directory под управлением Windows Server. У вас так же должен быть установлен OpenAM. Как быстро установить OpenAM, написано тут.

Настройка Windows

Создайте в Active Directory учетную запись для аутентификации Kerberos. При создании учетной записи установите чекбоксы User cannot change password и Password never expires enabled как показано на рисунке ниже.

В свойствах учетной записи на вкладке Account включите чекбокс This account supports Kerberos AES-256 bit encryption.

На контроллере домена создайте файл keytab в текущей директории. Для этого выполните команду в терминале Windows:

ktpass -out openamKerberos.keytab -princ HTTP/openam.example.com@AD.EXAMPLE.COM -pass +rndPass -maxPass 256 -mapuser openamKerberos -crypto AES256-SHA1 -ptype KRB5_NT_PRINCIPAL

In в данной команде в параметре -princ  openam.example.com - имя хоста OpenAM и EXAMPLE.COM - имя домена Active Directory, должно быть в верхнем регистре.

Скопируйте файлopenamKerberos.keytab в директорию, из которой OpenAM сможет ее прочитать. Откройте на firewall сетевой доступ от OpenAM к контроеллеру домена ad.example.com:88 по протоколам TCP и UDP

Проверьте файл keytab на машине с OpenAM:

$ klist -k -t openamKerberos.keytab
Keytab name: FILE:openamKerberos.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
0 01.01.1970 03:00:00 HTTP/openam.example.com@AD.EXAMPLE.COM

Настройка OpenAM

Создание модуля аутентификации

Откройте консоль администратора OpenAM. В поле логин введите значение amadmin, поле пароль введите значение из параметра ADMIN_PWD команды установки.

Выберите realm и в меню слева перейдите Authentication → Modules. В списке модулей нажмите кнопку Add Module . Введите имя модуля, например sso и тип модуля - Windows Desktop SSO .

Установите Service Principal как был указан в команде ktpass. Keytab File Name должен быть путь к файлу openamKerberos.keytab инстансе OpenAM. Установите Kerberos Realm, Kerberos Server Name и Trusted Kerveros realms в соответствии с вашей инфраструктурой.

Настройка цепочки аутентификации

В консоли администратора выберите нужный realm и в меню выберите пункт Authentication → Chains. Создайте цепочку аутентификации sso с созданным модулем sso.

Настройка realm

Перейдите в раздел Authentication → Chains для realm и на закладке User Profile установите настройку User Profile в значение Ignore.

Таким образом, вы можете аутентифицироваться по протоколу Kerberos без подключения Active Directory в User Data Store в OpenAM.

Проверка решения

На Windows машине под аутентифицированным в Active Directory пользователем откройте в браузере url OpenAM  http://openam.example.com:8080/openam/XUI/#login/&realm=/&service=sso

Если все настроено корректно, OpenAM сразу аутентифицирует вас без запроса учетных данных.

Комментарии (5)


  1. ajijiadduh
    25.04.2024 08:14

    В корпоративном среде


    1. pda0
      25.04.2024 08:14
      +1

      Если бы статья вышла вчера - чЮваки бы одобрили бы. :)


    1. maximthomas Автор
      25.04.2024 08:14

      Спасибо за замечание


  1. addsky
    25.04.2024 08:14

    в пунктах "Настройка цепочки аутентификации" и "Настройка realm" отображаются одинаковые изображения, из другой менюшки


    1. maximthomas Автор
      25.04.2024 08:14

      Спасибо, исправлено