本文阅读量 次
1. Spring Security -- 授权(Authorization)部分¶
1.1 概要¶
- Role-based 认证规则是以 "ROLE_" 前缀作为开头的,可以通过
GrantedAuthorityDefaults
进行自定义(需要通过 static method 进行注入) - Spring Security 认证可以实现以下三个级别的认证:
- 作用在 web 请求上,
- 作用在方法上(method invocation)
- 作用在 websocket 的 message 上
-
分为 pre-invocation 决策和 post-invocation 决策
-
AuthorizationFilter 默认是在 Spring Security filter chain 中的最后一个
1.1.1 Hierarchical Roles¶
1.2 请求级别的认证¶
1.2.1 请求匹配的方式¶
- 任意请求 anyrequest
- Ant 风格的匹配
- 正则表达式
- 按照 HTTP 方法进行匹配
- 按照 Dispatcher 类型匹配
- 自定义 matcher
1.2.2 重要类¶
- AuthorizationManager(取代 AccessDecisionManager 和 AccessDecisionVoter)
- AuthorityAuthorizationManager
- AuthenticatedAuthorizationManager
- AuthorizationManagers 提供一些有用的静态方法
- AuthorizationFilter => 替换 FilterSecurityInterceptor
1.3 Method 级别的认证¶
通过 @EnableMethodSecurity
进行开启。
开启后可以使用如下几个注解
@PreAuthorize
@PostAuthorize
@PreFilter
@PostFilter
Spring Boot Starter Security 默认并没有开启 method 级别的认证
1.3.1 重要的接口或类¶
- PreAuthorizeAuthorizationManager
- PostAuthorizeAuthorizationManager
- AuthorizationManagerBeforeMethodInterceptor
- AuthorizationManagerAfterMethodInterceptor
- ExceptionTranslationFilter
- AuthorizationMethodPointcuts
每一个 Annotation 都有自己对应的 Pointcut 每一个 Annotation 都有自己对应的 Method Interceptor