我的JAVA

我的门户
随笔 - 5, 文章 - 0, 评论 - 2, 引用 - 0
数据加载中……

Acegi配置指南(1)

Acegi Demo

web.xml配置

代码:

<web-app>

    ...

    <filter>

        <filter-name>Acegi Filter Chain Proxy</filter-name>

        <filter-class>

            org.acegisecurity.util.FilterToBeanProxy

        </filter-class>

        <init-param>

            <param-name>targetBean</param-name>

            <param-value>filterChainProxy</param-value>

        </init-param>

    </filter>

    ...

    <filter-mapping>

        <filter-name>Acegi Filter Chain Proxy</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    ...

</web-app>

说明:

采用Web的过滤器,构造一个过滤器链代理。初始参数:

参数名

描述

targetBean

Spring中查找Bean名一致的类,交由该类处理真正的Web过滤。推荐使用。

targetClass

JVM中查找类名一致的类,交由该类处理真正的Web过滤。不同J2EE容器可能会导致不同结果,会被targetBean参数覆盖。不推荐使用。

init

初始值。可能值包括:

Ø  lazy:延迟加载。主要解决由于Spring采用ContextLoaderServlet加载模式时有可能会晚于该filter而导致filter加载失败的问题。

lifecycle

指定生命周期。可能值包括:

Ø  servlet-container-managed:容器托管。一般情况下,AcegiFilter采用SpringAOP回调,启动和结束调用beforeXxx()afterXxx()方法。如果采用J2EE规范中提供的filter方法init()destroy(),设置该参数。

acegi.xml配置

过滤器链(filterChainProxy

代码:

<beans>

...

<!-- 过滤器链代理 -->

<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy">

    <property name="filterInvocationDefinitionSource">

       <value>

           PATTERN_TYPE_APACHE_ANT

           /**=httpSessionContextIntegrationFilter,

                basicProcessionFilter,

                exceptionTranslationFilter,

                filterInvocationInterceptor

       </value>

    </property>

</bean>

...

</beans>

说明:

过滤器链,配置一组过滤器。参数:

参数

描述

filterInvocationDefinitionSource

指定一组过滤器的Bean名。

过滤器:

过滤器

描述

httpSessionContextIntegrationFilter

负责完成Acegi上下文与HTTP Session同步。

basicProcessionFilter

负责完成用户的认证。

exceptionTranslationFilter

负责处理认证和授权中出现的异常。

filterInvocationInterceptor

负责完成用户的授权。

Spring Bean关系图:


说明:每个图块为一个Spring Bean斜体Bean和同名正体Bean为同一个Bean

HTTP会话集成(httpSessionContextIntegrationFilter

代码:

<!-- HTTP会话集成 -->

<bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter">

    <property name="allowSessionCreation" value="false" />

</bean>

说明:

负责完成Acegi上下文与HTTP Session同步。如果HTTP Session中存放了之前的认证信息,将其还原到Acegi上下文中。退出应用时会清除掉HTTP Session中的认证信息。参数:

Bean

参数

描述

httpSessionContextIntegrationFilter
HTTP
会话集成

allowSessionCreation

是否创建Session可能值包括:

Ø  true:创建Session。默认值。

Ø  false:不创建Session

基本认证(basicProcessionFilter

代码:

<!-- HTTP基本认证 -->

<bean id="basicProcessionFilter" class="org.acegisecurity.ui.basicauth.BasicProcessingFilter">

    <property name="authenticationManager" ref="authenticationManager" />

    <property name="authenticationEntryPoint" ref="basicProssingFilterEntryPoint" />

</bean>

 

<!-- 认证管理器 -->

<bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager">

    <property name="providers">

       <list>

           <ref local="daoAuthenticationProvider" />

       </list>

    </property>

</bean>

<!-- 认证源提供者 -->

<bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">

    <property name="userDetailsService" ref="inMemDaoImpl" />

</bean>

<!-- 用户信息提供者(内存级) -->

<bean id="inMemDaoImpl" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">

    <property name="userMap">

       <value>admin=password,ROLE_ADMIN</value>

    </property>

</bean>

 

<!-- HTTP基本认证入口点 -->

<bean id="basicProssingFilterEntryPoint" class="org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint">

    <property name="realmName" value="Acegi Demo Realm" />

</bean>

说明:

负责完成用户的认证,会调用认证管理器进行用户认证。如果认证不成功调用EntryPoint,构造返回信息,如401,浏览器会弹出对话框要求用户输入用户名和密码。需要指派认证管理器、认证源和EntryPoint。参数:

Bean

参数

描述

basicProcessingFilter
基本认证过滤器

authenticationManager

指派认证管理器。

authenticationEntryPoint

指派EntryPoint

authenticationManager
认证管理器

providers

指派认证源提供者。多值。

daoAuthenticationProvider
DAO
认证源提供者

userDetailsService

指派认证实现服务。

inMemDaoImpl
用户信息源(内存)

userMap

用户名/密码/角色信息,写死在配置文件中。一般用于演示。格式:

uid=pw,role

basicProssingFilterEntryPoint
基本认证入口点

realmName

返回到浏览器的提示信息:域名。

Spring Bean关系图:


说明:每个图块为一个Spring Bean斜体Bean和同名正体Bean为同一个Bean

异常处理(exceptionTranslationFilter

代码:

<!-- 异常处理 -->

<bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter">

    <property name="authenticationEntryPoint" ref="basicProssionFilterEntryPoint" />

    <property name="createSessionAllowed" value="false" />

</bean>

说明:

负责处理认证和授权中出现的异常。如果出现异常,调用EntryPoint。参数:

Bean

参数

描述

exceptionTranslationFilter
异常处理过滤器

authenticationEntryPoint

指派EntryPoint

createSeesionAllowed

是否创建Session可能值包括:

Ø  true:创建Session。默认值。

Ø  false:不创建Session

Spring Bean关系图:


说明:每个图块为一个Spring Bean斜体Bean和同名正体Bean为同一个Bean

授权拦截(filterInvocationInterceptor

代码:

<!-- 授权拦截 -->

<bean id="filterInvocationInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">

    <property name="authenticationManager" ref="authenticationManager" />

    <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager" />

    <property name="objectDefinitionSource">

       <value>

           PATTERN_TYPE_APACHE_ANT

           /securedpage.jsp=ROLE_ADMIN

       </value>

    </property>

</bean>

<!-- 授权策略 -->

<bean id="httpRequestAccessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">

    <property name="decisionVoters">

       <list>

           <ref local="roleVoter" />

       </list>

    </property>

</bean>

<!-- 投票策略实现 -->

<bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" />

负责完成用户的授权。给受保护的Web资源指定角色,指定授权策略。参数:

Bean

参数

描述

filterInvocationInterceptor
授权拦截器

authenticationManager

指派认证管理器。

accessDecisionManager

指派访问策略管理器。

objectDefinitionSource

Web资源/角色信息,写死在配置文件中。一般用于演示。格式:

/uri=role

accessDecisionManager

授权策略管理器

decisionVoters

指派投票策略。多值。

roleVoter
投票策略实现

 

Spring Bean关系图:


说明:每个图块为一个Spring Bean斜体Bean和同名正体Bean为同一个Bean

监听器

代码:

<!-- 认证监听器 -->

<bean id="authenticationLoggerListener" class="org.acegisecurity.event.authentication.LoggerListener" />

<!-- 授权监听器 -->

<bean id="authorizationLoggerListener" class="org.acegisecurity.event.authorization.LoggerListener" />

说明:

监听Acegi的认证/授权过程,并生成日志。

完整关系图


说明:每个图块为一个Spring Bean斜体Bean和同名正体Bean为同一个Bean

posted on 2010-02-21 09:55 xuyang 阅读(1019) 评论(0)  编辑  收藏 所属分类: Acegi


只有注册用户登录后才能发表评论。


网站导航: