我的JAVA

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

Acegi配置指南(2)

认证源配置

DAO认证源

代码:

<!-- 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>

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

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

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

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

    <!--

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

    <property name="passwordEncoder" ref="plaintextPasswordEncoder" />

    <property name="passwordEncoder" ref="md5PasswordEncoder" />

     -->

</bean>

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

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

    <!--

    <property name="userMap">

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

    </property>

     -->

    <property name="userProperties">

       <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">

           <property name="location" value="classpath:users.properties" />

        </bean>

    </property>

</bean>

<!-- 用户信息提供者(数据库级) -->

<bean id="jdbcDaoImpl" class="org.acegisecurity.userdetails.jdbc.JdbcDaoImpl">

    <property name="usersByUsernameQuery">

       <value>select username,password,enabled from users where username=?</value>

    </property>

    <property name="authoritiesByUsernameQuery">

       <value>select username,authority from users where username=?</value>

       <!--

       <value>select username,authority from authorities where username=?</value>

        -->

    </property>

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

</bean>

<!-- 明文密码编码 -->

<bean id="plaintextPasswordEncoder" class="org.acegisecurity.providers.encoding.PlaintextPasswordEncoder">

    <property name="ignorePasswordCase" value="true" />

</bean>

<!-- MD5密码编码 -->

<bean id="md5PasswordEncoder" class="org.acegisecurity.providers.encoding.Md5PasswordEncoder">

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

</bean>

<!-- 用户信息缓存 -->

<bean id="userCache" class="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache">

    <property name="cache" ref="userCacheBackend" />

</bean>

参数:

Bean

参数

描述

daoAuthenticationProvider
Dao
认证源提供者

userDetailsService

指派用户信息提供者(必需)

passwordEncoder

指派密码编码器

userCache

指派缓存

saltSource

指定加盐模式

forcePrincipalAsString

 

hideUserNotFoundExceptions

 

includeDetailsObject

 

messageSource

 

postAuthenticationChecks

 

preAuthenticationChecks

 

inMemDaoImpl
用户信息源(内存)

userProperties

Properties,可以指定Properties文件路径。

userMap

Map,写死在xml中。

jdbcDaoImpl
用户信息源(数据库)

usersByUsernameQuery

查询用户信息的SQL

authoritiesByUsernameQuery

查询用户权限的SQL

dataSource

指定数据源

plaintextPasswordEncoder
密码编码器(明文)

ignorePasswordCase

是否忽略密码大小写,默认值为否

md5PasswordEncoder
密码编码器(MD5

encodeHashAsBase64

是否使用BASE64编码。使用“否”才能正常工作。

shaPasswordEncoder
密码编码器(SHA

构造方法参数1

加密强度,推荐值为“256

encodeHashAsBase64

是否使用BASE64编码。使用“是”才能正常工作。

userCache
缓存(存放用户信息)

cache

指定缓存实例

默认SQL为:select username, password, enabled from users where username=?

默认SQL为:select username, authority from authorities where username=?

Spring Bean关系图:


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

LDAP认证源

代码:

<!-- 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="ldapAuthenticationProvider" />

        </list>

    </property>

</bean>

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

<bean id="ldapAuthenticationProvider" class="org.acegisecurity.providers.ldap.LdapAuthenticationProvider">

    <constructor-arg ref="passwordComparisonAuthenticator" />

    <!--

    <constructor-arg ref="bindAuthenticator" />

     -->

    <constructor-arg ref="defaultLdapAuthoritiesPopulator" />

    <!--

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

     -->

</bean>

<!-- 密码比较认证用户信息 -->

<bean id="passwordComparisonAuthenticator" class="org.acegisecurity.providers.ldap.authenticator.PasswordComparisonAuthenticator">

    <constructor-arg ref="initialDirContextFactory" />

    <property name="userDnPatterns">

       <list>

           <value>uid={0},ou=users</value>

       </list>

    </property>

    <property name="passwordAttributeName" value="userPassword" />

    <!--

    <property name="passwordEncoder" ref="plaintextPasswordEncoder" />

     -->

</bean>

<!-- 绑定登录认证用户信息 -->

<bean id="bindAuthenticator" class="org.acegisecurity.providers.ldap.authenticator.BindAuthenticator">

    <constructor-arg ref="initialDirContextFactory" />

    <property name="userDnPatterns">

       <list>

           <value>uid={0},ou=users</value>

       </list>

    </property>

</bean>

<!-- 提供用户权限信息 -->

<bean id="defaultLdapAuthoritiesPopulator" class="org.acegisecurity.providers.ldap.populator.DefaultLdapAuthoritiesPopulator">

    <constructor-arg ref="initialDirContextFactory" />

    <constructor-arg value="ou=groups" />

    <property name="groupSearchFilter" value="(member={0})" />

    <property name="groupRoleAttribute" value="cn" />

    <property name="convertToUpperCase" value="true" />

    <property name="defaultRole" value="ROLE_DEFAULT" />

    <property name="searchSubtree" value="true" />

    <property name="rolePrefix" value="" />

</bean>

<!-- LDAP连接工厂 -->

<bean id="initialDirContextFactory" class="org.acegisecurity.ldap.DefaultInitialDirContextFactory">

    <constructor-arg value="ldap://localhost:389/dc=acegi-demo,dc=com" />

    <property name="managerDn" value="cn=Manager,dc=acegi-demo,dc=com" />

    <property name="managerPassword" value="secret" />

    <property name="useConnectionPool" value="true" />

    <property name="authenticationType" value="simple" />

    <property name="initialContextFactory" value="com.sun.jndi.ldap.LdapCtxFactory" />

</bean>

参数:

Bean

参数

描述

ldapAuthenticationProvider
Ldap
认证源提供者

构造参数1

指派用户基本信息认证模块

构造参数2

指派提供用户权限信息模块

userCache

指派缓存

passwordComparisonAuthenticator
提供用户基本信息(密码比较)

构造参数1

指派LDAP连接工厂

userDnPatterns

指定查找用户相对DN,多值

passwordAttributeName

指定存放密码的属性

passwordEncoder

指派密码编码器

bindAuthenticator
提供用户基本信息(绑定登录)

构造参数1

指派LDAP连接工厂

userDnPatterns

指定查找用户相对DN,多值

defaultLdapAuthoritiesPopulator
提供用户权限信息

构造参数1

指派LDAP连接工厂

构造参数2

指定存放角色的相对Dn

groupSearchFilter

指定查找组成员的属性

groupRoleAttribute

指定存放角色名的属性

convertToUpperCase

是否将查询的角色名转换成大写

defaultRole

指定提供一个缺省的角色名

searchSubtree

是否查询子树

rolePrefix

指定角色名称的前缀

initialDirContextFactory
LDAP
连接工厂

构造参数1

连接LDAPURL

managerDn

连接Ldap的管理员Dn

managerPassword

连接Ldap的管理员密码

useConnectionPool

是否使用连接池

authenticationType

连接Ldap的认证模式

initialContextFactory

初始化上下文工厂

Spring Bean关系图:


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

posted on 2010-02-22 17:46 xuyang 阅读(850) 评论(0)  编辑  收藏 所属分类: Acegi


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


网站导航: