Виктор Попов, техлид DevOps-команды в X5 Tech и спикер курса «Безопасность проекта: аутентификация в Keycloak», подготовил туториал. В нём он рассказывает, как настроить Kerberos аутентификации в Keycloak и как подготовить браузеры для работы. 

Настройка Kerberos аутентификации в Keycloak

Какие имена использовались на тестовом стенде:

  • domain controller: WIN-0KIV48GRJRV.keycloak.local

  • domain name: keycloak.local

  • keycloak vm: keycloak.keycloak.local

  • AD user для кербероса: CN=keycloak,OU=kk-users,DC=keycloak,DC=local

Шаг 1

Создаём пользователя в АД. Этот пользователь будет использоваться для интеграции Keycloak с Kerberos.

Шаг 2

Дальше нужно получить keycloak.keytab. Для этого на виндовой машине выполняем:

ktpass -out keycloak.keytab -princ
HTTP/keycloak.keycloak.local@KEYCLOAK.LOCAL -mapUser
keycloak@KEYCLOAK.LOCAL
-pass $PASS -kvno 0 -ptype KRB5_NT_PRINCIPAL -crypto RC4-HMAC-NT
  • -princ — это адрес Keycloak;

  • -mapUser — это пользователь, для которого регистрируется SPN и генерируется keytab; 

  • -pass — это пароль пользователя;

  • остальное — магия, которую нужно оставить как есть.

Шаг 3

Регистрируем SPN:

setspn -A HTTP/keycloak.local@KEYCLOAK.LOCAL keycloak

Для этого нужны права в АД.

Шаг 4

В настройках user federation Keycloak включаем Kerberos Integration:

В Kerberos realm прописываем имя домена заглавными буквами.

В Server Principal  прописываем principal, на который создан keytab file. В пункте 2 (ключ -princ).

В KeyTab — путь до keytab файла.

Шаг 5

Подкладываем keytab в контейнер по указанному пути.

Шаг 6

В примере используется шифрование RC4-HMAC-NT. Его нужно разрешить в контейнере с Keycloak.

Для этого в контейнере в файл /etc/krb5.conf.d/crypto-policies добавляем rc4-hmak в строку permitted_enctypes

Шаг 7

В Realm во вкладке Authentication переключаем kerberos в Alternative для flow. Обычно это нужно делать только для browser flow.

Настройка браузеров для работы

Internet explorer

В IE нужно добавить адрес в trusted sites:

Chrome

Нужно запустить Chrome со следующими ключами:

chrome.exe --auth-server-whitelist="*.keycloak.local"
--auth-negotiate-delegate-whitelist="*.keycloak.local"

Либо настроить через групповую политику:

AuthServerWhitelist = *.keycloak.local

Firefox

Нужно зайти в about:config и найти там следующие настройки:

network.negotiate-auth.trusted-uris

network.automatic-ntlm-auth.trusted-uris

В них прописать адрес сервера Keycloak.

Примечание редакции

Виктор Попов — один из администраторов русскоязычного Keycloak комьюнити. Если у вас возникли вопросы по работе с Keycloak, вы всегда можете задать их в комьюнити.

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