Spring安全序列流程

时间:2011-08-24 03:13:30

标签: java

有人可以解释一下Spring Security的工作原理吗?架构和主类或接口,我想概述一下这个框架。 Spring的安全性如何从身份验证到访问控制,每个阶段的类或接口???我在春天看到有一些注释,比如@Secured,Spring如何处理它们以及Spring收集信息进行安全检查的地方?

2 个答案:

答案 0 :(得分:1)

首先,您应该知道存在一个Spring安全过滤器链(稍后将在此处描述) 加载上下文后,Authentication Manager会填充安全上下文,此上下文包含有关要使用的安全策略以及如何使用它们的所有信息。

收到请求时,流程为:
1)安全拦截器捕获它以保护安全资源
2)询问Access Decision Manager要做什么 3)然后该经理检查是否应该授予访问权限(基于选民原则(基于规则))
4)如果是这样,过滤器调用继续方法
5)如果没有抛出安全例外

弹簧安全过滤链是:

1)SecurityContextPersistenceFilter
- 如果已授予会话访问权限并且请求继续执行 - 如果没有,则转到2)

2)注销过滤器(如果不是注销请求则不执行任何操作)和
3)UsernameAndPasswordAuthenticationFilter
- 从请求参数中提取用户名和密码,并将其传递给authenticationManager.authenticate(用户名,密码)

4)AuthenticationManager根据策略执行认证(例如:Basic,Digest,RSA) - 如果经过身份验证,则向SecurityContextPersistenceFilter记住会话ID的响应头添加信息作为会话
- 如果不是,则抛出弹簧安全例外

5)继续ExceptionTranslationFilter如果到目前为止没有抛出异常什么都不做,请求端什么都不做,只在响应时执行,如果资源没有属性什么都没有,请求被传递给FilterSecurityInterceptor(基本配置)
<登记/> 6)最后,它访问安全资源并以精确的反转顺序返回

我建议你一个接一个地打开并检查这个类,断点,调试它们,看看堆栈调用。这样您就可以了解安全流程。
另外,如果有任何疑问,我建议您参考文档。

希望我能帮助你或其他人。 干杯

答案 1 :(得分:0)

我认为这对于SO问题来说太宽泛了。我建议你阅读Spring Security Manual(特别是第5章和第7章,它们很好地概述了它们如何组合在一起),如果你有更具体的问题,请回来。 (并一次问他们一个......)