spring-security - dependencia - spring security web
Combina un filtro de autenticación personalizado con spring-security-kerberos (1)
Esta respuesta te ayudará con la autenticación Kerberos opcional
Y si necesita más personalización, amplía KerberosAuthenticationProvider por su clase MyCustomAuthenticationProvider y lo pega al atributo de clase:
<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>
Estoy usando spring-security-kerberos para autenticar a los usuarios remotos, esto funciona bien. El problema que tengo es que a veces los usuarios no tienen el boleto kerberos en su lugar y necesito usar otra forma de autenticación. He escrito mi propio proveedor de autenticación ( myCusomAuthenticationProvider
) para este propósito. Este proveedor personalizado debe solicitar al usuario la autenticación BASIC y utiliza varios servidores LDAP para autenticar al usuario en función del nombre de usuario y la contraseña.
El problema que veo es que mi administrador de autenticación personalizado siempre obtiene KerberosServiceRequestToken como el token de autenticación y no logro obtener UsernamePasswordAuthenticationToken. ¿Cómo puedo hacer que el servidor devuelva los métodos "Negotiate" y "Basic" al navegador y que mi proveedor maneje la autenticación básica?
He encontrado una manera de hacerlo con algunos ajustes al código de primavera-seguridad-kerberos, pero estoy tratando de encontrar una mejor manera de hacerlo.
web.xml: http://pastebin.com/embed.php?i=ZidnBMwZ
root-context-with-krb.xml: http://pastebin.com/c8vfUZfV