CAS+LDAP实现单点登录认证
2016-09-21 22:00
393 查看
一、常用的LDAP服务器有以下几种
1:Apache directory server
2:Sun directory server
3:openDS 一个开源的,基于LDAP和DSML标准的Directory service。Directory service不仅包括Directory server,还有其它与directory相关的基本service:directory proxy、virtual dirctory、namespace distribution和数据同步Directory server是一个可以通过网络访问,信息分级存储的数据库。OpenDS只能用在linux操作系统。该项目的地址为:http://www.opends.org/
4: Netscape Directory Server
5: Window AD
6: IBM Tivoli Diectory Server
本文档中使用IBM Tivoli Diectory Server作为测试LDAP服务器,apache directory studio作为LDAP客户端软件(到http://directory.apache.org/ 下载并安装apache directory studio1.4.0)。LDAP服务器可以装在不同的机器上,CAS通过配置URL来访问它,下面看看CAS和LDAP服务器结合起来要如何配置。
二、CAS Server端的配置
1.分别将spring-ldap-1.3.1.RELEASE-all.jar(可以在 Spring官网下载spring-ldap-1.3.1.RELEASE-minimal.zip,解压后在dist目录下找到spring-ldap-1.3.1.RELEASE-all.jar)和cas-server-support-ldap.jar(可以在CAS包moudles目录下找到)两个文件添加至cas/WEB-INF/lib目录下。
2.如果是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>
--> LDAP认证配置有两种:[第一种]、FastBindLdapAuthenticationHandler 这种认证处理器一般用于DN是由用户名直接组成的,比如:uid=%u,ou=dev,dc=micmiu.com,dc=com ,其中 %u 就是CAS登录的用户名。修改web的配置文件 WEB-INF\deployerConfigContext.xml:首先在<beans>根节点下添加bean:ContextSource 的配置: <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="pooled" value="false"/> <property name="url" value="ldap://ldapServerIp:389" /> <property name="userDn" value="cn=root"/> <property name="password" value="your_password"/> <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 的配置说明:(1)如果有多个LDAP服务器,可以通过参数urls 配置多个。(2)FastBindLdapAuthenticationHandler配置时,这里的userDn
可以配置成 “cn=root,ou=dev,dc=micmiu,dc=com” 或 “cn=root,ou=dev” 或 “cn=root” 或 “root” 这四个都可以。其中的cn=root为LDAP服务器实例的管理员用户,password为对应的密码。(3)如果LDAP服务器有SSL,注意url配置的前缀是ldaps:”ldaps://ldapServerIp: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> [第二种]、BindLdapAuthenticationHandler 这种认证处理器一般用于需要验证的用户名是DN的其他的属性比如email,而不是上面第一种处理器中的uid(当然uid属性同样适用,下面我们配置的示例就还是用uid)。修改web的配置文件 WEB-INF\deployerConfigContext.xml:同样在<beans>根节点下添加bean:ContextSource 的配置: <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="anonymousReadOnly" value="false" /> <property name="password" value="your_password" /> <property name="pooled" value="false" /> <property name="urls"> <list> <value>ldap://ldapServerIp:389</value> </list> </property> <property name="userDn"
value="cn=root,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>
1:Apache directory server
2:Sun directory server
3:openDS 一个开源的,基于LDAP和DSML标准的Directory service。Directory service不仅包括Directory server,还有其它与directory相关的基本service:directory proxy、virtual dirctory、namespace distribution和数据同步Directory server是一个可以通过网络访问,信息分级存储的数据库。OpenDS只能用在linux操作系统。该项目的地址为:http://www.opends.org/
4: Netscape Directory Server
5: Window AD
6: IBM Tivoli Diectory Server
本文档中使用IBM Tivoli Diectory Server作为测试LDAP服务器,apache directory studio作为LDAP客户端软件(到http://directory.apache.org/ 下载并安装apache directory studio1.4.0)。LDAP服务器可以装在不同的机器上,CAS通过配置URL来访问它,下面看看CAS和LDAP服务器结合起来要如何配置。
二、CAS Server端的配置
1.分别将spring-ldap-1.3.1.RELEASE-all.jar(可以在 Spring官网下载spring-ldap-1.3.1.RELEASE-minimal.zip,解压后在dist目录下找到spring-ldap-1.3.1.RELEASE-all.jar)和cas-server-support-ldap.jar(可以在CAS包moudles目录下找到)两个文件添加至cas/WEB-INF/lib目录下。
2.如果是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>
--> LDAP认证配置有两种:[第一种]、FastBindLdapAuthenticationHandler 这种认证处理器一般用于DN是由用户名直接组成的,比如:uid=%u,ou=dev,dc=micmiu.com,dc=com ,其中 %u 就是CAS登录的用户名。修改web的配置文件 WEB-INF\deployerConfigContext.xml:首先在<beans>根节点下添加bean:ContextSource 的配置: <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="pooled" value="false"/> <property name="url" value="ldap://ldapServerIp:389" /> <property name="userDn" value="cn=root"/> <property name="password" value="your_password"/> <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 的配置说明:(1)如果有多个LDAP服务器,可以通过参数urls 配置多个。(2)FastBindLdapAuthenticationHandler配置时,这里的userDn
可以配置成 “cn=root,ou=dev,dc=micmiu,dc=com” 或 “cn=root,ou=dev” 或 “cn=root” 或 “root” 这四个都可以。其中的cn=root为LDAP服务器实例的管理员用户,password为对应的密码。(3)如果LDAP服务器有SSL,注意url配置的前缀是ldaps:”ldaps://ldapServerIp: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> [第二种]、BindLdapAuthenticationHandler 这种认证处理器一般用于需要验证的用户名是DN的其他的属性比如email,而不是上面第一种处理器中的uid(当然uid属性同样适用,下面我们配置的示例就还是用uid)。修改web的配置文件 WEB-INF\deployerConfigContext.xml:同样在<beans>根节点下添加bean:ContextSource 的配置: <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="anonymousReadOnly" value="false" /> <property name="password" value="your_password" /> <property name="pooled" value="false" /> <property name="urls"> <list> <value>ldap://ldapServerIp:389</value> </list> </property> <property name="userDn"
value="cn=root,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>
相关文章推荐
- cas+openldap实现单点登录认证一
- SSO之CAS+LDAP实现单点登录认证
- CAS 实现单点登录(SSO)数据库查询认证机制-自定义编码方式(四)
- [原创]django+ldap+memcache实现单点登录+统一认证
- cas+ldap实现单点登录
- 修改CAS框架源码实现多字段认证单点登录
- IT忍者神龟之基于CAS实现单点登录(SSO)之配置CAS服务端的数据库查询认证机制(一)
- SSL+CAS+LdAP实现单点登录
- CAS 实现单点登录(SSO)数据库查询认证机制-xml方式(三)
- CAS实现单点登录(数据库认证)
- OpenLDAP+SSL+SSSD 实现Linux登录集中认证
- 修改CAS框架源码实现多字段认证单点登录
- 利用CAS之SSO模块实现单点登录认证
- CAS 使用 ESUP 插件认证 LDAP 用户的单点登录
- JForum论坛单点登录的几种实现方式 (CAS和Cookie)
- C#中调用SQL存储过程实现登录认证
- ASP.NET中如何实现FORM认证登录
- 使用 CAS 在 Tomcat 中实现单点登录
- 巧妙实现 Form 表单认证跨站点、跨服务器的单点登录(Single Sign On)
- (转)ASP.NET 安全认证(四)——巧妙实现 Form 表单认证跨站点、跨服务器的单点登录(Single Sign On)