认证源配置
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
|
连接LDAP的URL
|
managerDn
|
连接Ldap的管理员Dn
|
managerPassword
|
连接Ldap的管理员密码
|
useConnectionPool
|
是否使用连接池
|
authenticationType
|
连接Ldap的认证模式
|
initialContextFactory
|
初始化上下文工厂
|
Spring Bean关系图:
说明:每个图块为一个Spring Bean。斜体Bean和同名正体Bean为同一个Bean。