Spring Security 认证和授权流程
时间: 2023-10-13 15:00:30 浏览: 123
Spring Security 的认证和授权流程如下:
1. 用户发起登录请求,输入用户名和密码。
2. Spring Security 的 AuthenticationFilter 拦截登录请求,将用户名和密码封装成一个 Authentication 对象。
3. AuthenticationManager 负责对 Authentication 对象进行验证。它使用一个或多个 AuthenticationProvider 来进行验证,每个 Provider 可以验证不同的认证方式,例如用户名密码认证、LDAP 认证等。
4. AuthenticationManager 将 Authentication 对象传递给合适的 AuthenticationProvider 进行验证。如果验证成功,AuthenticationProvider 会返回一个填充了用户信息和权限信息的 Authentication 对象。
5. 如果有多个 AuthenticationProvider,AuthenticationManager 将按顺序尝试每个 Provider,直到找到一个能够成功验证的 Provider 或者所有 Provider 都验证失败。
6. 一旦 AuthenticationManager 成功验证了 Authentication 对象,它将会在 SecurityContext 中保存这个对象,表示用户已经通过认证。
7. 接下来,Spring Security 的授权流程开始。用户访问受保护的资源时,SecurityInterceptor 会拦截请求并验证用户是否具有访问权限。
8. AccessDecisionManager 负责决策用户是否有权限访问资源。它使用一个或多个 AccessDecisionVoter 进行投票决策,每个 Voter 根据自己的授权策略对用户的权限进行判断。
9. 如果所有 Voter 都同意授权,则用户被授权访问资源;反之,如果有任何一个 Voter 不同意授权,则用户将被拒绝访问资源。
10. 如果用户被授权访问资源,请求将继续处理并返回相应的结果;如果用户被拒绝访问资源,将会抛出 AccessDeniedException 异常。
以上就是 Spring Security 的认证和授权流程。
阅读全文