- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的 web.xml 配置是
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这是我的安全配置
<intercept-url pattern="/*" access="ROLE_USER" />
<intercept-url pattern="/*.ico" filters="none" />
</http>
<beans:bean id="customAuthenticationProvider" class="net.spring3.provider.MyAuthProvider" />
<authentication-manager>
<authentication-provider ref="customAuthenticationProvider" />
</authentication-manager>
这是我的 customAuthProvider 类
public class MyAuthProvider implements AuthenticationProvider {
@Override
public boolean supports(Class<? extends Object> arg0) {
// TODO Auto-generated method stub
return false;
}
@SuppressWarnings("serial")
private static Map<String, String> SIMPLE_USERS = new HashMap<String, String>(2) {{
put("joe", "joe");
put("bob", "bob");
}};
@SuppressWarnings("serial" )
private static List<GrantedAuthority> AUTHORITIES = new ArrayList<GrantedAuthority>(1) {{
add(new GrantedAuthorityImpl("ROLE_USER"));
}};
@Override
public Authentication authenticate(Authentication auth) throws AuthenticationException
{
// All your user authentication needs
System.out.println("==Authenticate Me==");
if (SIMPLE_USERS.containsKey(auth.getPrincipal())
&& SIMPLE_USERS.get(auth.getPrincipal()).equals(auth.getCredentials()))
{
return new UsernamePasswordAuthenticationToken(auth.getName(), auth.getCredentials(), AUTHORITIES);
}
throw new BadCredentialsException("Username/Password does not match for " + auth.getPrincipal());
}
}
页面显示登录表单,当我输入 bob 和 bob 作为登录时,它会抛出以下错误。
Your login attempt was not successful, try again.
Reason: No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
我检查了调试级别 ALL 的日志,这就是我得到的。
FINE: Request is to process authentication
Nov 17, 2011 5:37:36 AM org.springframework.context.support.AbstractApplicationContext publishEvent
FINEST: Publishing event in Root WebApplicationContext: org.springframework.security.authentication.event.AuthenticationFailureProviderNotFoundEvent[source=org.springframework.security.authentication.UsernamePasswordAuthenticationToken@ffff8dfd: Principal: sd; Credentials: [PROTECTED]; Authenticated: false; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@fffe3f86: RemoteIpAddress: 127.0.0.1; SessionId: x4lg4vtktpw9; Not granted any authorities]
Nov 17, 2011 5:37:36 AM org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter unsuccessfulAuthentication
FINE: Authentication request failed: org.springframework.security.authentication.ProviderNotFoundException: No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken
对此有任何帮助..我在这里做错了什么?
最佳答案
正如您在评论中所写的,问题是您总是在身份验证提供程序的 supports()
方法中返回 false
。但不是总是返回 true
你应该检查 authentication
你得到这样的:
public class MyAuthenticationProvider implements AuthenticationProvider, Serializable {
@Override
public boolean supports(Class<? extends Object> authentication) {
return (UsernamePasswordAuthenticationToken.class.isAssignableFrom(authentication));
}
// ...
}
关于java - 未找到 UsernamePasswordAuthenticationToken 的 AuthenticationProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8162698/
我想要一个基本的受身份验证保护的 REST 应用程序。我遵循了 http://www.baeldung.com/spring-security-authentication-provider 中的一般
这个问题已经有答案了: Catching exception thrown in AuthenticationProvider (4 个回答) 已关闭 3 年前。 我正在我的应用程序中实现自定义身份验
这是 this question 的后续内容. 我有一个扩展 AbstractUserDetailsAuthenticationProvider 的自定义 AuthenticationProvider
我正在实现自定义“AuthenticationProvider”。如果未经过身份验证,我将在“身份验证”函数内抛出异常,如下所示。 public class DelegatingLdapAuthent
我正在整合 Spring Security Auth0使用 1.3.2.RELEASE BOM 进入 Spring Web 应用程序。我一直在使用提供的 auth0-security-context.
我对 Spring 还很陌生。 我的目标是拥有一些带有自定义authenticate方法的AuthenticationProvider,该方法将Authenticate对象作为参数,而不仅仅是用户名和
我正在实现自定义“AuthenticationProvider”。如果未通过身份验证,我将在“身份验证”函数中抛出异常,如下所示。 public class DelegatingLdapAuthent
对不起,大家,也许是一个愚蠢的问题。 但是我需要在我的网络应用程序中实现一些额外的身份验证和授权逻辑,并且我不清楚必须在哪里使用 AuthenticationProvider 和 Authentica
我尝试使用 JWT 来保护基于 Spring Security 的资源,以实现以下目标:1. Token无效或过期,返回401。2. 授权成功,但无权访问部分控制者。然后返回403。现在有问题了。当用
我有一个简单的身份验证提供程序,我正在尝试将其与 Spring Security 一起使用。 目前,通过上述配置,用户第一次访问时会被重定向到登录页面。我不想要这个重定向。
任何人都可以帮我解释我们应该使用 AuthenticationProvider 以及我们应该使用 AbstractUserDetailsAuthenticationProvider 的场景/用例。 最
我的 web.xml 配置是 springSecurityFilterChain org.springframework.web.filter.DelegatingF
谁能告诉我 Spring Security 中 AuthenticationManager 和 AuthenticationProvider 之间的区别? 如何使用它们以及如何调用它们。我的理解是 S
如何在自定义 AuthenticationProvider 中访问 HttpServletRequest。我试过这样做 RequestAttributes requestAttributes = Re
我无法在我的 SecurityConfig 类中 Autowiring AuthenticationProvider Spring 框架实例。这很奇怪,因为我已经包含了必要的导入,并且 UserDet
要在 Spring Boot 中提供自定义身份验证提供程序,我是否需要以下两项?它们有什么区别? AuthenticationManagerBuilder HttpSecurity.authentic
我有一个 Keycloak 连接器,允许我通过 SSO 检索用户的用户名。我想使用这个用户名来验证用户并在数据库中查找他的权限,并将该用户权限注入(inject)到 spring security 中
在使用 spring security 时,我在 stackoverflow 中看到了一个有趣的线程,其中要求对两组用户进行身份验证,以防止员工反对不同的身份验证提供商 LDAP 和针对 DATABA
这个问题已经有答案了: 奥 git _a (3 个回答) 已关闭 5 年前。 我正在创建自己的自定义身份验证提供程序。现在我只是检查静态用户名和密码,但稍后这将被替换为更高级的东西,所以虽然我不需要在
我一直在尝试使用他们的 x509 证书通过 LDAP 对用户进行身份验证,但似乎无法正常工作。我声明了一个身份验证提供程序,但我仍然收到一条错误消息,说没有提供程序。 这是我的调试输出: INFO:
我是一名优秀的程序员,十分优秀!