Моя цель: реализовать SSO в веб-приложении на основе Java. Моя проблема: я не специалист по безопасности ...с использованием файла keytab с расширением kerberos безопасности весны
После некоторого расследования я обнаружил, что весеннее защитное расширение кебероса - это то, что мне нужно (также посмотрел на apache shiro, но мог найти только пример с страницей входа).
Я использовал образцы в следующем проекте: https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-sample
я понял, что мне нужно создать Keytab. Когда я пытался использовать Keytab я получил следующее сообщение об ошибке:
javax.security.auth.login.LoginException: Unable to obtain password from user
Глядя на некоторые подробности об этой ошибке я видел, что это может быть результатом wrong keytab location, но это не тот случай - я отлажена в источник и увидел, что файл keytab загружен.
Итак, я решил проверить свой keytab и посмотреть, все ли в порядке. Во-первых, это последняя команда (после длительной эволюции) Я использовал, чтобы создать свой Keytab:
ktpass /out http-web.keytab /mapuser [email protected] /princ HTTP/[email protected] /pass MyPass /ptype KRB5_NT_PRINCIPAL
Конечно, я создал имя участника-службы для MyUser с помощью следующей команды:
setspn -a HTTP/[email protected] MYDOMAIN.COM\MyUser
Я проверил SPN с следующее:
setspn -Q HTTP/[email protected]
И получил успешный результат:
Checking domain DC=mydomain,DC=com CN=MyUser,OU=MyOrg,DC=mydomain,DC=com
HTTP/MyUser
HTTP/[email protected]
Существующий SPN найден!
Теперь я хотел проверить, смогу ли я получить билет на MyUser, выполнив следующую команду:
kinit [email protected]
Я получил положительный результат ("новый билет хранится в файле кэша ....«)
Теперь я хотел, чтобы проверить его с моим Keytab:
kinit [email protected] -k -t http-web.keytab
Got следующее исключение:
Exception: krb_error 0 Do not have keys of types listed in default_tkt_enctypes available; only have keys of following type: No error KrbException: Do not have keys of types listed in default_tkt_enctypes available; only have keys of following type:
Я использовал Klist инструмент, чтобы увидеть, если мой Keytab содержит любые ключи:
klist -e -K -k -t http-web.keytab
Получил следующий результат:
KVNO: 8
Key type: 23
Key: 0x47bf8039a8506cd67c524a03ff84ba4e
Time stamp: Jan 01, 1970 02:00
В последней отчаянной попытке, я проверил следующие параметры учетной записи для MyUser:
- типы шифрования Использование Kerberos DES для этой учетной записи
- В аккаунте suppoerts Kerberos AES 128 бит шифрования
- Учет suppoerts Kerberos AES 256-битное шифрование
Я не уверен, что настройка этих параметров вызвала его, но теперь, когда я запускаю
kinit [email protected]
Я получаю следующее сообщение об ошибке:
Exception: krb_error 14 KDC has no support for encryption type (14) KDC has no support for encryption type
KrbException: KDC has no support for encryption type (14)
Так я вроде отчаянной здесь, я не знаю, что я делаю. Это все зависит от проб и ошибок (в основном, от ошибок). Если кто-нибудь может направить меня сюда, мы будем очень благодарны.
Спасибо, Лиор