微服务认证与授权 Spring Cloud Security:核心过滤器之 FilterSecurityInterceptor
对于一个服务系统,安全是必须需要考虑的方面。应用安全是一个不断追求更强的目标,全面性、全系统的方法很重要,因为开发者永远不知道入侵者是如何对系统进行攻击。在系统安全的实现上,一般倡导使用安全层layers of security
,即多层次安全保证,通过连续层提供额外的安全性。每一层的安全性越强,应用程序的健壮性和安全性就越高。Java EE应用程序位于安全层的高层次,需要为它添加特定的问题域安全配置。
我们在本文将会介绍下微服务认证与授权 Spring Cloud Security:核心过滤器和FilterSecurityInterceptor。
核心过滤器
在spring-security中有一部分核心过滤器,总是会被应用在web安全中,接下来我们将对这些核心过滤器的相关实现进行介绍, 分别被有:
-
FilterSecurityInterceptor鉴权拦截器 -
ExceptionTranslationFilter异常处理转化过滤器 -
SecurityContextPersistenceFilter上下文持久化过滤器 -
UsernamePasswordAuthenticationFilter用户名密码过滤器
FilterSecurityInterceptor
FilterSecurityInterceptor
负责了控制了HTTP资源的访问安全,对访问进行鉴权处理。我们可以通过配置SecurityMetadataSource
来决定对资源访问的所需要的权限啊约束,对SecurityMetadataSource
主要配置是对某个资源的路径需要的List<ConfigAttribute>
权限规则列表。
DefaultFilterInvocationSecurityMetadataSource
中获取请求的权限规则的方法如下:
public Collection<ConfigAttribute> getAttributes(Object object) {
final HttpServletRequest request = ((FilterInvocation) object).getRequest();
for (Map.Entry<RequestMatcher, Collection<ConfigAttribute>> entry : requestMap
.entrySet()) {
if (entry.getKey().matches(request)) {
return entry.getValue();
}
}
return null;
}
根据请求的路径匹配出对应的Collection<ConfigAttribute>
用于判断访问规则,进行鉴权操作。FilterSecurityInterceptor.setSecurityMetadataSource()
方法接受的是FilterInvocationSecurityMetadataSource
接口的实现,在自定义SecurityMetadataSource
时要注意继承正确的接口并注入。
具体涉及到的`FilterSecurityInterceptor`中的过滤器操作流程,我们将会在后面的文章继续介绍。
- 点赞
- 收藏
- 关注作者
评论(0)