Виктор Попов, техлид DevOps-команды в X5 Tech и спикер курса «Безопасность проекта: аутентификация в Keycloak», подготовил туториал. В нём он рассказывает, как настроить Kerberos аутентификации в Keycloak и как подготовить браузеры для работы.
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
setspn -A HTTP/keycloak.local@KEYCLOAK.LOCAL keycloak
Для этого нужны права в АД.
В Kerberos realm прописываем имя домена заглавными буквами.
В Server Principal прописываем principal, на который создан keytab file. В пункте 2 (ключ -princ).
В KeyTab — путь до keytab файла.
Для этого в контейнере в файл /etc/krb5.conf.d/crypto-policies добавляем rc4-hmak в строку permitted_enctypes
chrome.exe --auth-server-whitelist="*.keycloak.local"
--auth-negotiate-delegate-whitelist="*.keycloak.local"
Либо настроить через групповую политику:
AuthServerWhitelist = *.keycloak.local
network.negotiate-auth.trusted-uris
network.automatic-ntlm-auth.trusted-uris
В них прописать адрес сервера 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.
Как настроить Kerberos аутентификации в Keycloak
Виктор Попов, техлид DevOps-команды в X5 Tech и спикер курса « Безопасность проекта: аутентификация в Keycloak », подготовил туториал. В нём он рассказывает, как настроить Kerberos аутентификации в...
habr.com