相关疑难解决方法(0)

Spring Security Filter Chain的工作原理

我意识到Spring安全性构建在过滤器链上,它将拦截请求,检测(缺少)身份验证,重定向到身份验证入口点或将请求传递给授权服务,并最终让请求命中servlet或抛出安全性异常(未经认证或未经授权).DelegatingFitlerProxy将这些过滤器粘合在一起.为了执行他们的任务,这些过滤器访问服务,例如UserDetailsS​​erviceAuthenticationManager.

链中的关键过滤器(按顺序)

  • SecurityContextPersistenceFilter(从JSESSIONID恢复身份验证)
  • UsernamePasswordAuthenticationFilter(执行身份验证)
  • ExceptionTranslationFilter(从FilterSecurityInterceptor捕获安全性异常)
  • FilterSecurityInterceptor(可能会抛出身份验证和授权异常)

我很困惑如何使用这些过滤器.对于弹簧提供的form-login,UsernamePasswordAuthenticationFilter仅用于/ login,而后者的过滤器不是?form-login名称空间元素是否自动配置这些过滤器?是否每个请求(已验证或未验证)都会到达非登录URL的FilterSecurityInterceptor

如果我想使用从登录检索的JWT令牌来保护我的REST API ,该怎么办?我必须配置两个命名空间配置http标签,权限?另一个用于/ login with UsernamePasswordAuthenticationFilter,另一个用于REST url,带有自定义JwtAuthenticationFilter.

配置两个http元素会创建两个springSecurityFitlerChains吗?是UsernamePasswordAuthenticationFilter默认是关闭的,直到我宣布form-login?如何更换SecurityContextPersistenceFilter一个,Authentication从现有JWT-token而不是JSESSIONID

authentication spring filter spring-security jwt

113
推荐指数
3
解决办法
9万
查看次数

标签 统计

authentication ×1

filter ×1

jwt ×1

spring ×1

spring-security ×1