Используя предоставленное имя пользователя, пароль и имя домена, как я могу получить логическое значение, указывающее, прошел ли пользователь успешную аутентификацию на основном контроллере домена? Аутентификация должна выполняться с использованием протокола Kerberos для контроллеров домена Windows. Заранее спасибо, Дэн
Аутентификация JAAS в домене Windows
Ответы (2)
Существует бесплатная реализация модуля входа JAAS только для Windows и аутентификатора SSO Negotiate (Kerberos / NTLM): Waffle.
Вам нужно либо написать свой собственный, либо использовать для этого сторонний модуль аутентификации. Когда я делал это, в JDK не было ничего доступного, поэтому я использовал этот инструмент . Обратите внимание, что это GPL, но оттуда вы можете поучиться. Вам нужно будет создать conf. файл, описывающий ваш модуль аутентификации, и загрузите его в вашу JVM с помощью свойства java.security.auth.login.config (например, с помощью -D или любым другим способом). В случае с Tagish это выглядит примерно так:
NTLogin {com.tagish.auth.win32.NTSystemLogin требуется returnNames = true returnSIDs = false defaultDomain = "домен"; };
Еще вам нужно указать файл конфигурации kerberos через свойство java.security.krb5.conf. У меня нет под рукой подробностей об этом файле, но вы можете легко найти его в сети - погуглите о krb5.conf. Настройки в этом файле должны соответствовать вашему домену Windows и другим настройкам Windows.
Это немного сложно настроить, но для меня это сработало очень хорошо, довольно надежно.