gpt4 book ai didi

java - 从 Spring 3.0.x 迁移到 3.1.x 时出现 BadCredentialsException

转载 作者:行者123 更新时间:2023-12-02 07:37:28 24 4
gpt4 key购买 nike

我们已从 3.0.7 spring security 迁移到 3.1.2,并且我们使用内存配置的测试之一因凭据错误而失败。

我们不做任何特殊的事情,只是使用纯文本用户名和密码对其中一个用户进行身份验证。一旦经过身份验证,我们就会填充我们的权限。

代码:

public Authentication authenticate(UserDetails userDetails)
throws AuthenticationException {
try {
org.springframework.security.core.Authentication authenticate = authenticationManager.authenticate(createAuthenticationRequest(userDetails));
if (!authenticate.isAuthenticated()) {
throw new AuthenticationException("Authentication failed for user ["+userDetails.getUsername()+"]");
}

Collection<? extends GrantedAuthority> grantedAuthorities = authenticate.getAuthorities();
...
} catch(Exception exception) {
throw new AuthenticationException(exception);
}

代码:

<bean id="daoAuthenticationProvider" 
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<property name="userDetailsService" ref="daoUserDetailsService" />
</bean>

<bean id="daoUserDetailsService" class="org.springframework.security.core.userdetails.memory.InMemoryDaoImpl">
<property name="userMap">
<value>
Edward = koala, READ_ONLY
</value>
</property>
</bean>

我们在调用身份验证时遇到以下异常:

Caused by: org.springframework.security.authentication.BadCre dentialsException: Bad credentials
at org.springframework.security.authentication.dao.Da oAuthenticationProvider.additionalAuthenticationCh ecks(DaoAuthenticationProvider.java:67)
at org.springframework.security.authentication.dao.Ab stractUserDetailsAuthenticationProvider.authentica te(AbstractUserDetailsAuthenticationProvider.java: 149)
at org.springframework.security.authentication.Provid erManager.authenticate(ProviderManager.java:156)
at org.openspaces.security.spring.SpringSecurityManag er.authenticate(SpringSecurityManager.java:117)
... 11 more

有什么想法可以解决这个问题或者是否有补丁待解决这个问题?

最佳答案

查看您的配置,这可能是空格解析问题,但通过在 DaoAuthenticationProvider.additionalAuthenticationChecks 中放置断点来查看身份验证失败的原因,应该很容易进行调试。

无论如何,用于配置内存中用户的属性编辑器方法已被弃用,取而代之的是命名空间配置。你可以使用类似的东西

<security:user-service id="daoUserDetailsService">
<security:user name="Edward" password="koala" authorities="READ_ONLY" />
</security:user-service>

得到相同的结果。当然你必须add the security namespace到您的应用程序上下文文件。

关于java - 从 Spring 3.0.x 迁移到 3.1.x 时出现 BadCredentialsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11987692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com