Вам необходимо установить расширение Spring Security Kerberos - это единственный готовый способ выполнить то, что вы описываете в Spring Security 3. Это поддерживает согласование SPNEGO, но требует некоторого количества настройки на сервере (и знание того, как работает SPNEGO и Kerberos).
Не так много документации, но примеры приложений Майка, которые он поставляет с 1.0M2, хороши и охватывают большинство распространенных сценариев, включая автоматическую аутентификацию SPNEGO.
Ключевым моментом для SPNEGO является настройка пользовательского AuthenticationEntryPoint
- вам нужно будет сделать это с помощью специального пружинного компонента следующим образом:
<bean id="kerbEntryPoint" class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" />
<bean id="kerbAuthenticationProcessingFilter" class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
<property name="authenticationManager" ref="authenticationManager" />
</bean>
... кроме них требуются другие компоненты (опять же, обратитесь к примерам с расширением Kerberos). Отпишитесь, если вы продолжите знакомство с Spring Security или если вам нужны точные детали (так как в них вовлечено несколько бинов / конфигурационных битов, некоторые знания вашей конфигурации будут полезны, например, используете ли вы стиль пространства имен <http>
или нет).
Кроме этой опции, вам придется настроить аналогичный тип аутентификации SPNEGO (например, использовать WAFFLE, как вы предлагаете) - другие вопросы SO достаточно хорошо это охватывают.
Наконец, вы могли бы настроить Tomcat на другой веб-сервер, который лучше поддерживает SPNEGO или NTLM, например Microsoft IIS или Apache Web Server с mod_spnego .
Надеюсь, одна из этих идей подойдет вам!