我正在使用spring-security-kerberos来验证远程用户 - 这很有效。我遇到的问题是,有时用户没有kerberos票据,我需要使用其他形式的身份验证。为此,我已经编写了自己的身份验证提供程序(myCusomAuthenticationProvider
)。此自定义提供程序应该要求用户进行BASIC身份验证,并使用多个LDAP服务器根据用户名和密码对用户进行身份验证。
我看到的问题是我的自定义身份验证管理器总是将KerberosServiceRequestToken作为身份验证令牌,而我无法获得UsernamePasswordAuthenticationToken。如何让服务器向浏览器返回“协商”和“基本”方法,并让我自己的提供商处理基本身份验证?
我已经找到了一种方法来对spring-security-kerberos代码进行一些调整,但我正试图找到一种更好的方法来做到这一点。
web.xml:http://pastebin.com/embed.php?i=ZidnBMwZ
root-context-with-krb.xml:http://pastebin.com/c8vfUZfV
答案 0 :(得分:1)
这个答案可以帮助你Optional kerberos authentication
如果您需要更多自定义,请通过您的类 MyCustomAuthenticationProvider 扩展 KerberosAuthenticationProvider 并将其粘贴到类属性:
<bean id="kerberosAuthenticationProvider" class="com.test.MyCustomAuthenticationProvider">
<property name="kerberosClient">
<bean class="org.springframework.security.extensions.kerberos.SunJaasKerberosClient">
<property name="debug" value="${krb.debug}"/>
</bean>
</property>
<property name="userDetailsService" ref="dummyUserDetailsService"/>
</bean>