|
目录:
-
概述
-
详细步骤
-
LDAP安装配置
-
CAS基础安装配置
-
CAS整合LDAP的配置
[一]、概述
本来主要详细是介绍CAS和LDAP整合实现单点登录的步骤。
[二]、详细步骤
1、LDAP安装配置 详见:图文介绍openLDAP在windows上的安装配置
安装配置,添加部分测试数据如下:

2、CAS的基础安装配置:SSO之CAS单点登录实例演示
3、CAS整合LDAP的配置
如果是Mave构建项目的,添加LDAP的相关依赖:
| <dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-support-ldap</artifactId> <version>${cas.version}</version> </dependency> <!-- 仅仅在使用到连接池时添加该依赖 <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>${apache.commons.pool.version}</version> </dependency> --> |
ps:也可以在官网下载的发布包的目录 modules/ 下找到类似cas-server-support-ldap-3.4.11.jar 的包。 LDAP认证配置有两种: [第一种]、FastBindLdapAuthenticationHandler 这种认证处理器一般用于DN是由用户名直接组成的,比如:uid=%u,ou=dev,dc=micmiu.com,dc=com ,其中 %u 就是CAS登录的用户名。 修改web的配置文件 WEB-INF\deployerConfigContext.xml: 首先在<beans>跟节点下增加bean:ContextSource 的配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<bean
id="contextSource"
class="org.springframework.ldap.core.support.LdapContextSource">
<property
name="pooled"
value="false"/>
<property
name="url"
value="ldap://192.168.8.150:389"
/>
<property
name="userDn"
value="cn=Manager"/>
<property
name="password"
value="michael"/>
<property
name="baseEnvironmentProperties">
<map>
<entry
key="com.sun.jndi.ldap.connect.timeout"
value="3000"
/>
<entry
key="com.sun.jndi.ldap.read.timeout"
value="3000"
/>
<entry
key="java.naming.security.authentication"
value="simple"
/>
</map>
</property>
</bean>
|
ContextSource 的配置说明:
-
如果有多个LDAP服务器,可以通过参数urls 配置多个
-
FastBindLdapAuthenticationHandler配置时,这里的userDn 可以配置成 “cn=Manager,ou=dev,dc=micmiu,dc=com” 或 “cn=Manager,ou=dev” 或 “cn=Manager” 或 “Manager” 这四个都可以
-
如果LDAP服务器有SSL,注意url配置的前缀是ldaps:”ldaps://192.168.8.150:636″
在<bean id=”authenticationManager” />下找到SimpleTestUsernamePasswordAuthenticationHandler的配置,修改成如下:
| <bean class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler"> <property name="filter" value="uid=%u,ou=dev,dc=micmiu,dc=com" /> <property name="contextSource" ref="contextSource" /> </bean> |
配置好后分别启动三个应用:tomcat-cas、tomcat-app1、tomcat-app2,进行认证测试: - 输入Michael/dev4me 或者 dev001/dev001 可以成功登录,
- 输入Michael/test4me 或者test001/test001 则登录失败。
[第二种]、BindLdapAuthenticationHandler 这种认证处理器一般用于需要验证的用户名是DN的其他的属性比如email,而不是上面第一种处理器中的uid(当然uid属性同样适用,下面我们配置的示例就还是用uid)。 修改web的配置文件 WEB-INF\deployerConfigContext.xml: 同样在<beans>跟节点下增加bean:ContextSource 的配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<bean
id="contextSource"
class="org.springframework.ldap.core.support.LdapContextSource">
<property
name="anonymousReadOnly"
value="false"
/>
<property
name="password"
value="michael"
/>
<property
name="pooled"
value="true"
/>
<property
name="urls">
<list>
<value>ldap://192.168.8.150:389</value>
</list>
</property>
<property
name="userDn"
value="cn=Manager,dc=micmiu,dc=com"
/>
<property
name="baseEnvironmentProperties">
<map>
<!--
LDAP SSL访问配置
<entry
key="java.naming.security.protocol" value="ssl" />
-->
<entry
key="java.naming.security.authentication"
value="simple"
/>
</map>
</property>
</bean>
|
在<bean id=”authenticationManager” />修改认证bean的配置,修改成如下:
|
|
<bean
class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">
<property
name="filter"
value="uid=%u"
/>
<property
name="searchBase"
value="dc=micmiu,dc=com"
/>
<property
name="contextSource"
ref="contextSource"
/>
<!--
允许多个账号-->
<property
name="allowMultipleAccounts"
value="true"
/>
</bean>
|
配置好后分别启动三个应用:tomcat-cas、tomcat-app1、tomcat-app2,进行认证测试:
-
输入Michael/dev4me 或者 dev001/dev001 可以成功登录,
-
输入Michael/test4me 或者 test001/test001 也可以成功登录。
如果把参数:searchBase的值修改为:”ou=dev,dc=micmiu,dc=com”,重新启动测试认证的结果如下:
-
输入Michael/dev4me 或者 dev001/dev001 可以成功登录,
-
输入Michael/test4me 或者test001/test001 则登录失败。
此时的认证效果和第一种的认证效果是一样的。
有关连接池的配置可以参见官网介绍:https://wiki.jasig.org/display/CASUM/LDAP
本文介绍到此结束@Michael Sun.
|