Хобрук: Ваш путь к мастерству в программировании

Создайте таблицу ключей MS AD для spring-security-kerberos-client

Я пытаюсь протестировать свое приложение в домене ms. Сервер приложений развернут успешно. Оба, Kerberos и имя пользователя/пароль, аутентификация работают хорошо.

Но когда я добавляю «тест» (есть какая-то причина, по которой это контроллер), используя «KerberosRestTemplate» с сгенерированной клиентской keytab «ktpass», тогда возникает исключение «SunJaasKerberosTicketValidator»:

'java.security.PrivilegedActionException: GSSException: неуказанный сбой на уровне GSS-API (уровень механизма: указанная версия ключа недоступна (44))'.

Я предполагаю, что причина в том, что файл keytab, сгенерированный ktpass, был поврежден. Вот как я его генерирую:

"C:> ktpass /princ [email protected] /pass Qw1er2ty3 /ptype KRB5_NT_PRINCIPAL /out deniz.keytab

*NOTE: creating a keytab but not mapping principal to any user.
For the account to work within a Windows domain, the
principal must be mapped to an account, either at the
domain level (with /mapuser) or locally (using ksetup)
If you intend to map [email protected] to an account through other means
or don't need to map the user, this message can safely be ignored.
WARNING: pType and account type do not match. This might cause problems.
Key created.
Output keytab to deniz.keytab:
Keytab version: 0x502
keysize 52 [email protected] ptype 1 (KRB5_NT_PRINCIPAL) vno 1 etype 0x17 (RC4-HMAC) keylength 16 (0xa0eb0b1e09b8c36edc
2da4762c53283f)*"

На всякий случай я сохранил образец на своем github: https://github.com/mezlogo/kerberos_sample

Я думаю, что keytab моя keytab сломана, но не могу найти, как сгенерировать ее для использования клиентом (без HTTP/имя_пользователя@DOMAIN).

P.S. Извините за мой английский.


Ответы:


1

Всякий раз, когда вы запускаете ktpass, AD увеличивает номер версии, хранящийся в AD, на 1. Поэтому перед запуском ktpass вам нужно посмотреть фактическое значение и указать это значение, увеличенное на 1, с помощью параметра /kvno (https://technet.microsoft.com/en-us/library/cc753771.aspx), чтобы ключ номер версии, хранящийся в AD, и номер версии в файле keytab идентичны.

04.02.2016
  • Чтобы уточнить, AD увеличивает номера версий, AD увеличивает ключевой номер версии (KVNO), как объяснено в этом ответе SO: serverfault.com/a/699734/327341 28.06.2016
  • Новые материалы

    HMTL - Многозадачное обучение для решения задач НЛП
    Достижение результатов SOTA путем передачи знаний между задачами Область обработки естественного языка включает в себя десятки задач, среди которых машинный перевод, распознавание именованных..

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..