-1

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

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

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

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

根上下文与 krb.xml:http ://pastebin.com/c8vfUZfV

4

1 回答 1

1

这个答案将帮助您可选的 kerberos 身份验证

如果您需要更多自定义,则通过您的类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>
于 2014-10-13T23:04:56.167 回答