整理中…
一、Spring Security 工作原理简介
单个 HTTP 请求的过程中,通过 FilterChain 拦截并处理请求和响应:
Spring Security 就是基于 Filter 来实现的。
DelegatingFilterProxy 是 Spring 基于 Servlet Filter 标准实现的一个 Filter ,目的是 1. 通过Spring容器来管理 Servlet Filter 的生命周期;2.通过 DelegatingFilterProxy 注册 Spring 的 Bean。
Spring Security Filter 的入口是 FilterChainProxy(FilterChainProxy 是 Spring 的一个 Bean),FilterChainProxy 使用 SecurityFilterChain 来确定应该为一个请求调用哪些 Spring Security Filters。
二、Spring Security Authentication
Authentication(Spring Security 的身份验证) Architecture components(用于 Servlet 身份验证的 SpringSecurity 的主要架构组件)
- SecurityContextHolder:Spring Security 存储身份验证人员详细信息的地方;
- SecurityContext:从 SecurityContextHolder 获得并包含当前身份验证的用户的身份验证;
- Authentication:可以是 AuthenticationManager 的输入,以提供用户提供的用于身份验证的凭据或来自 SecurityContext 的当前用户;
- GrantedAuthority:授予主体身份验证的权限(角色、范围等)
- AuthenticationManager:定义 Spring Security 的过滤器如何执行身份验证的 API;
- ProviderManager:AuthenticationManager 最常见的实现;
- AuthenticationProvider:ProviderManager 使用它来执行特定类型的身份验证;
- Request Credentials with AuthenticationEntryPoint:用于从客户端请求凭据(即重定向到登录页面、发送 WWW-Authenticate 响应等)
- AbstractAuthenticationProcessingFilter:用于身份验证的基本过滤器(这也很好地了解了高级身份验证流程以及各个部分如何协同工作)。
AuthenticationManager、ProviderManager、AuthenticationProvider 之间的关系:
Authentication Mechanisms(认证机制)
- Username and Password
- OAuth 2.0 Login
- SAML 2.0 Login
- Central Authentication Server (CAS)
- Remember Me
- JAAS Authentication
- OpenID
- Pre-Authentication Scenarios
- X509 Authentication
|