繁体   English   中英

如何获得自定义的Spring 2身份验证提供程序来接受UsernamePasswordAuthenticationToken?

[英]How do I get a custom Spring 2 Authentication Provider to accept a UsernamePasswordAuthenticationToken?

在Spring 2中,我创建了一个自定义的身份验证提供程序,因为我无法像Spring希望的那样从数据库中获取密码,因为这样会出现黑匣子。 当我尝试进行身份验证时,我得到:

找不到org.springframework.security.providers.UsernamePasswordAuthenticationToken的AuthenticationProvider

我已将此bean放入我的security.xml中:

<bean id="imsAuthProvider" class="com.terrapages.mokbeecds.ims.IMSAuthenticationProvider">
    <security:custom-authentication-provider />
</bean>

我相信,这就是我所需要的。 它应该只从表单中获取用户名和密码,然后将其传递给我的提供者以进行适当处理。 我的customAuthenticationProvider中也有这个:

public boolean supports(@SuppressWarnings("rawtypes") Class authentication) {
    return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
}

据我了解,在将身份验证令牌提供给自定义身份验证提供程序之前已对其进行了检查。 如果返回false,则Spring检查下一个身份验证提供程序。

主要的authenticate(Authentication)方法只能抛出BadCredentialsExceptionAuthenticationServiceException ,据我所知,不应导致上面的输出。

关于Spring 2的信息很难找到,因为Spring 3目前无处不在。

如何使我的提供者接受UsernamePasswordAuthenticationToken

Spring Security 2的文档也非常好: http : //static.springsource.org/spring-security/site/docs/2.0.x/reference/html/springsecurity.html请使用以下支持方法:

public boolean supports(Class authentication) {
    return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
}

已编辑

意见建议:

  1. 删除您的提供程序-身份验证应该起作用。 如果不是,请解决此问题。
  2. 调试身份验证和支持方法,看看有什么问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM