将自定义身份验证筛选器与spring-security-kerberos相结合

时间:2014-01-13 14:19:16

标签: spring-security spring-security-kerberos

我正在使用spring-security-kerberos来验证远程用户 - 这很有效。我遇到的问题是,有时用户没有kerberos票据,我需要使用其他形式的身份验证。为此,我已经编写了自己的身份验证提供程序(myCusomAuthenticationProvider)。此自定义提供程序应该要求用户进行B​​ASIC身份验证,并使用多个LDAP服务器根据用户名和密码对用户进行身份验证。

我看到的问题是我的自定义身份验证管理器总是将KerberosServiceRequestToken作为身份验证令牌,而我无法获得UsernamePasswordAuthenticationToken。如何让服务器向浏览器返回“协商”和“基本”方法,并让我自己的提供商处理基本身份验证?

我已经找到了一种方法来对spring-security-kerberos代码进行一些调整,但我正试图找到一种更好的方法来做到这一点。

web.xml:http://pastebin.com/embed.php?i=ZidnBMwZ

root-context-with-krb.xml:http://pastebin.com/c8vfUZfV

1 个答案:

答案 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>