Проверка подлинности Tomcat SPNEGO для Active Directory не работает
Я пытаюсь аутентифицироваться против AD, используя компонент http://spnego.sourceforge.net/ с tomcat.
Я создал имя участника-службы "setspn.exe -A HTTP/ имя_сервера SVCTomcat" & "setspn.exe -A HTTP/servername.fqdn.net SVCTomcat"
Я создал свой файл krb5.conf & login.conf и настроил фильтр в файле web.xml, т.е.
<filter-name>SpnegoHttpFilter</filter-name>
<filter-class>net.sourceforge.spnego.SpnegoHttpFilter</filter-class>
<param-name>spnego.allow.unsecure.basic</param-name>
<param-value>false</param-value>
<param-name>spnego.login.client.module</param-name>
<param-value>spnego-client</param-value>
<param-name>spnego.krb5.conf</param-name>
<param-value>krb5.conf</param-value>
<param-name>spnego.login.conf</param-name>
<param-value>login.conf</param-value>
<param-name>spnego.preauth.username</param-name>
<param-value>SVCTomcat</param-value>
<param-name>spnego.preauth.password</param-name>
<param-value>Pasword</param-value>
<param-name>spnego.login.server.module</param-name>
<param-value>spnego-server</param-value>
<param-name>spnego.prompt.ntlm</param-name>
<param-value>false</param-value>
<param-name>spnego.logger.level</param-name>
<param-value>2</param-value>
Обратите внимание, я убрал из этого посторонние теги, так что это не настоящий XML.
Когда я захожу на страницу, защищенную этим фильтром, я получаю это в лог-файле catalina. 25 марта 2010 г. 12:41:26 org.apache.catalina.startup.Catalina start INFO: запуск сервера в 4615 мс 25 марта 2010 г. 12:41:47 net.sourceforge.spnego.SpnegoHttpFilter doFilter FINE: Principal=SYSTEM@TESTDOMAIN
И в примере hello_spnego.jsp на сайте он просто сообщает, что имя пользователя, которого запускает tomcat (SYSTEM), а не пользователя, с которым я соединяюсь.
Похоже, что автор остановился на полпути на странице отладки, поэтому у меня нет других областей, кроме тройной проверки моей конфигурации.
Есть идеи?
1 ответ
Предполагая, что вы используете веб-браузер, работающий на том же компьютере, что и Tomcat, для перехода на страницу hello_spnego.jsp, я думаю, что происходит вот что:
Вы не устанавливаете параметр конфигурации SpnegoHttpFilter "spnego.allow.localhost".
Хотя в справочном руководстве по фильтру ( http://spnego.sourceforge.net/reference_docs.html) указано, что для этого параметра по умолчанию установлено значение false, при просмотре исходного кода (строка 80 SpnegoFilterConfig.java) этот параметр по умолчанию принимает значение true.
Когда для этого параметра установлено значение true, SpnegoHttpFilter будет обходить аутентификацию и вместо этого просто назначит аутентифицированному субъекту учетную запись пользователя, под которой работает Tomcat. Вот почему вы получаете результат "SYSTEM@TESTDOMAIN".
Если мое первоначальное предположение верно, попробуйте открыть страницу hello_spnego.jsp с удаленной машины, и она должна выполнить настоящую аутентификацию. (Возможно, вам потребуется включить аутентификацию Kerberos для вашего браузера.)
Обратите внимание, что автор фильтра активно отвечает на вопросы на форумах проекта SourceForge по адресу http://sourceforge.net/projects/spnego/forums/