- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个基本的受身份验证保护的 REST 应用程序。我遵循了 http://www.baeldung.com/spring-security-authentication-provider 中的一般说明为了让安全工作。
我最终创建了 AuthenticationProvider
的实现,但它永远不会被 Spring 调用。所有请求都以错误结束:
{"timestamp":1460199213227,"status":401,"error":"Unauthorized","message":"Full authentication is required to access this resource","path":"/test"}
@Configuration
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class ApplicationSecurity extends WebSecurityConfigurerAdapter {
@Autowired
CustomAuthenticationProvider authenticationProvider;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authenticationProvider);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authenticationProvider(authenticationProvider)
.authorizeRequests()
.anyRequest().authenticated().and().httpBasic();
}
}
@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
@Autowired
private UserDAO userDAO;
@Autowired
private Authenticator authenticator;
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
// This never gets called, I checked with debugger
String username = authentication.getName();
String password = authentication.getCredentials().toString();
User user = userDAO.findByUsername(username);
User authenticatedUser = authenticator.authenticate(user, password);
if (authenticatedUser == null){
throw new RESTAuthenticationException("Auth failed");
}
List<GrantedAuthority> authorityList = new ArrayList<>();
return new UsernamePasswordAuthenticationToken(user, authorityList);
}
@Override
public boolean supports(Class<?> aClass) {
return aClass.equals(UsernamePasswordAuthenticationToken.class);
}
}
@RestController
public class UserController {
@RequestMapping(value = "/test")
public ResponseEntity test(@AuthenticationPrincipal User user) {
return ResponseEntity.ok().body(user);
}
}
最佳答案
您收到状态代码为 401 的响应。这是 "unauthorized" http status code .这可能是由您的请求中缺少/格式错误的 Authorization header 引起的。
您正在使用 Http-Basic :它需要在请求中包含以下 header :
Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l
<user>:<password>
base64 编码。
关于spring - 未调用自定义 AuthenticationProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36515895/
我想要一个基本的受身份验证保护的 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:
我是一名优秀的程序员,十分优秀!