Назад | Перейти на главную страницу

Проверка подлинности Tomcat SPNEGO в Active Directory не работает

Я пытаюсь пройти аутентификацию в AD, используя http://spnego.sourceforge.net компонент с котом.

Я создал свой SPN "setspn.exe -A HTTP / servername 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), а не пользователя, с которым я подключаюсь.

Похоже, автор остановился на полпути к странице отладки, так что мне нечего искать, кроме как трижды проверить мою конфигурацию.

Любые идеи?

Предполагая, что вы используете веб-браузер, работающий на том же компьютере, что и Tomcat, чтобы перейти на страницу hello_spnego.jsp, вот что, как я предполагаю, происходит:

  1. Вы не устанавливаете параметр конфигурации SpnegoHttpFilter «spnego.allow.localhost».

  2. Хотя справочник по фильтру (http://spnego.sourceforge.net/reference_docs.html) указывает, что для этого параметра по умолчанию установлено значение false, а при просмотре исходного кода (строка 80 SpnegoFilterConfig.java) видно, что для этого параметра по умолчанию установлено значение true.

  3. Если для этого параметра установлено значение true, SpnegoHttpFilter будет обходить аутентификацию и вместо этого просто устанавливает аутентифицированного участника для учетной записи пользователя, под которой работает Tomcat. Вот почему вы получаете результат «SYSTEM @ TESTDOMAIN».

Если мое первоначальное предположение верно, попробуйте открыть страницу hello_spnego.jsp с удаленного компьютера, и она должна выполнить фактическую аутентификацию. (Возможно, вам потребуется включить аутентификацию Kerberos для вашего браузера.)

Обратите внимание, что автор фильтра активно отвечает на вопросы на форумах проекта SourceForge по адресу http://sourceforge.net/projects/spnego/forums/