Spring学习笔记9

来源:互联网 发布:老男孩python第十期 编辑:程序博客网 时间:2024/05/23 15:36

Spring的安全性

       Spring安全性涉及到一个基于Spring AOPservlet过滤器的安全框架。

·Spring安全性初探

       Spring安全框架提供了声明式(declarative)的安全机制,它提供了一个综合的安全解决方案用于处理web请求或方法调用级别上的认证和授权。有了这个框架,Spring可以充分使用注入依赖和面向切片技术的优势。另外Spring的安全机制以前以Acegi闻名。

       对于Web应用程序,Spring的安全机制会使用servlet过滤器来过滤servlet请求并执行相应的认证操作。同时,Spring使用了一种特殊的机制声明servlet过滤器来保证注入依赖的执行;对于方法调用,Spring的安全机制使用了AOP去代理对象来确保用户拥有权限去调用受保护的方法。

       无论上面哪种情况,Spring的安全机制都由5个核心的组件构成:

·安全拦截器(Security Interceptor)

可以理解为是阻止你访问受保护资源的“门闩”。只有输入了正确的用户名密码才能打开这道“门闩”。一个security interceptor的实际实现依赖于受保护资源。如果是一个URL资源,security interceptor被实现成一个servlet过滤器,但如果是一个方法调用,Spring将会使用切片。实际上,一个security interceptor就是起到拦截资源访问的作用,具体的实现它会委托给很多不同的管理器来完成。

·认证管理器(Authentication manager)

认证管理器的任务是对访问者进行身份认证,通常是检验用户名和密码。Spring安全机制中的认证管理器是一个基于接口的插件式组件,因此你可以使用任意认证机制。事实上,Spring就提供了一组认证管理器。

·访问决策管理器(Access decisionsmanager)

       Authentication manager一样,Access decisions manager也是插件式的组件。一经身份认证,Spring需要确定你是否有权限访问受保护资源,这时就需要访问决策管理器来进行确认,它将根据你的权限信息和受保护资源的安全属性来决定是否允许你访问资源。

·Run-as管理器(Run-as manager)

       即使你通过了身份认证和权限授权,你仍然面临着更多的安全性约束。比如,你可能被授权浏览一个web页面,但是那些产生页面的对象可能具有不同的安全级别。Run-as manager就被用来使用另一个身份授权来代替你现有的身份授权,而这个身份授权将允许你访问应用程序中更深层次的受保护对象。并不是所有的应用程序都有身份替换的需求,所以Run-as manager只是可选的担不是必须的。

·After-invocation manager

       After-invocation manager与其他组件不同,它是在资源被访问之后执行安全机制。它主要用来保证从资源返回的数据的访问安全性。如果一个after-invocation manager被应用于一个服务层bean,那么它就会审查方法的返回值,然后确定用户是否有权限来查看返回的对象。After-invocation manager还可以修改返回值来确保用户只能方法返回值的某些属性。和Run-as manager一样,并不是所有的应用都需要after-invocation manager