Как настроить Kerberos аутентификации в Keycloak

Kate

Administrator
Команда форума
Виктор Попов, техлид 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:

860bd302ff47ce190b161d8b50dcee67.png

В 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.

13ca73f05a4bdad48a1ba45bc003cea1.png

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

Internet explorer​

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

a17dbd41353be4d3e0504aa6bad092a8.png

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.

 
Сверху