Spring Security——组件

一、Security Interceptor:

        Security Interceptor组件是Spring Security中最重要的组件,它用来鉴定一个请求是否可以访问某个资源。包含一个抽象类AbstractSecurityInterceptor,以及两个具体的实现类FilterSecurityInterceptor 以及MethodSecurityInterceptor。

       Security Interceptor包含preprocessing和post processing两个步骤。

       在preprocessing中,首先确认要访问的资源是否有安全限制。如果没有,继续操作。如果有,Security Interceptor从当前的SecurityContext中获取Authentication对象。如果有必要,Authentication对象会被AuthenticationManager认证。认证通过后,AccessDecisionManager会被调用,决定认证后的对象是否可以访问资源。如果不允许,抛出AccessDeniedException。如果允许,而且配置了RunAsManager,Authentication对象被传递给RunAsManager。RunAsManager会返回一个新的Authentication对象,包含相同的principal,credentials,原有的authorities再加上当前的权限。新的Authentication对象被放入当前的SecurityContext。 这个过程结束后,Security Interceptor会创建一个新的包含Security Context和ConfigAttributes内容的InterceptorStatusToken。这个token会在postprocessing步骤中使用。

         接着,会调用资源。

         最后,开始postprocessing。        

二、XML namespace

三、Filters and Filter Chain

    Security Security使用过滤器链模型来实现应用安全。这个模型基于标准的servlet过滤器功能。

四、ConfigAttribute

五、Authentication对象

    对象Authentication是一个抽象概念,它有几种不同实现,代表了登入系统的实体,通常为用户。

  

六、SecurityContext和SecurityContextHolder

    SecurityContext用来存储当前线程的Authentication对象。SecurityContextHolder是用来访问SecurityContext的类。

七、AuthenticationProvider

AuthenticationProvider 是Authentication对象的主要入口。

八、AccessDecisionManager

AccessDecisionManager用来确定某一个authentication对象是否可以访问某一特定资源。

九、AccessDecisionVoter

十、UserDetailsService和AuthenticationUserDetailsService

     UserDetailsService负责从用户应用中(例如内存,数据库)获取用户信息。

 十一、UserDetails

     UserDetails是系统的一个主要抽象,用来表示用户。

十二、ACL

十三、JSP Taglib

 

 

 


版权声明:本文为violetlove原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。