SSL+CAS+LdAP实现单点登录

来源:互联网 发布:人工智能三大流派 编辑:程序博客网 时间:2024/05/22 03:47

一、;单点登录(SSOSingleSignon)实现方;SSL+CAS+LdAP实现单点登录;二、技术介;SSL(SecureSocketLayer)安全;IDE:myeclipse相关版本JDK:JDK;http://directory.apache.;1.解压cas-server-3.4.10-re;个作为服务器端(D:\tomcat),另一个作为;te

一、

单点登录(SSO Single Sign on)实现方式

SSL+CAS+LdAP 实现单点登录; 二、 技术介绍

SSL(Secure Socket Layer)安全套接层; CAS 是加拿大标准协会(Canadian Standards Association), 是加拿大首家专为 制定工业标准的非盈利机构,也是世界最著名的安全认证机构之一。 Ldap 是轻量目录访问协议, (Lightweight Directory Access Protocol). 三、 相关软件

IDE:myeclipse 相关版本 JDK: JDK 相关版本 Web 服务器:tomcat 相关版本 cas-server-3.4.10-release.zip 和 cas-client-java-2.1.1.zip http://www.ja-sig.org/downloads/cas-clients/cas-client-java-2.1. 1.zip http://www.ja-sig.org/downloads/cas/cas-server-3.3.1-release.z ip 到该网站可找到最先版本进行下载。 LDAP 服务器 可以到 apache 下载最新的 apacheds-1.5.7-setup.exe 地址 http://directory.apache.org/ , apacheds-1.5.7-setup.exe 可以作为 LDAP 服务器。 下 载 安 装 ApacheDirectoryStudio-win32-1.5.2.v20091211.exe

http://directory.apache.org/,可以使用该软件 LDAP 连接的配置,及其目录 条目,LDAP 的操作。 可以下载 openLdap 进行命令行下的 LDAP 操作。 四、 tomcat 配置 SSL,CAS

1. 解压 cas-server-3.4.10-release.zip 和 cas-client-java-2.1.1.zip 2. 将下载的 JDK 安装到本机,例如这里安装目录为 D:\Java\jdk1.6.0_20,注 意: 这里不要安装到 D:\Program Files\java\jdk 下, 这里目录中包含空格, 在我们配置 SSL 生成证书时可能报错。配置 JDK 环境变量。 3. 安装 tomcat 或者使用非安装版都可以,本次测试中使用两个 tomcat,一

个作为服务器端(D:\tomcat) ,另一个作为客户端(E:\tomcatClient) 。 4. 配置 SSL, 通过 JDK 中的 keytool 工具生成服务器端和客户端的证书文件。 ? 配置 host 文件。在 C:\WINDOWS\system32\drivers\etc 找到 hosts 文 件,添加 127.0.0.1 10.1.0.160 localhost 表示是本机 ip, 在实际中一般已经存在。

test.com 这里我使用的是 test.com 来表示服务器名

称,这个是 10.1.0.160 是本机的 ip 号,在实际配置中如果是两台机 器,应该是服务器端的 ip 号。 注: Ip 与服务器名称之间用 tab 键隔开。

服务器端和客户端均需要修改 hosts 配置文件。

10.1.0.160

test.com 这条配置,如果服务器端和客户端不是同

一计算机,那么这里需要在服务器端计算机和客户端计算机的 hosts 文件中都加入该条命令,也就是服务器 ip 的配置。

10.1.0.160

该 ip 必须为服务器在局域网中的 ip 地址。

? 服务器端证书生成 a. 打开 cmd,cd 到%JAVA_HOME%\jre\lib\security,这里我的 jdk 目 录为 D:\Java\jdk1.6.0_20\jre\lib\security,如下图:

b. 使用 keytool 工具,删除、生成和导入证书文件 使用 keytool 工具可以删除已经存在的证书。 Keytool –delete –alias tomcatsso –keystore cacerts –storepass

changeit

删除已经存在的 cacerts,

Keytool –delete –alias tomcatsso –storepass changeit ,删除证书,这 里使用别名 tomcatsso。 Keytool –list –keystore cacerts –storepass changit ,列出已经存在的 导入的证书。 ? 制作密钥库 -dname “cn=test.com” –alias server

Keytool –genkey –keyalg RSA –keypass password

-keystore server.jks –storepass password

注:这里的 cn 需要改为你的服务器端域名,这里我使用的是本 机在 hosts 配置为 test.com .这里也可以是计算机名称。 Password 部分可根据需要进行自己的修改。server.jks,这里的文件后缀名, 可根据自身的需要进行修改。 ? 将密钥库导出为证书文件 Keytool –export –trustcacerts –alias server –file server.cer –keystore server.jks –storepass password ? 把证书导入到 java 中 Keytool –import –trustcacerts –alias server –file server.cer –keystore “%JAVA_HOME%/jre/lib/security/cacerts” –storepass password 注:这里使用%JAVA_HOME%,的话需要在环境变量中进行配置。 ? 客户端证书制作 ? 制作密钥库 Keytool –genkey –keyalg RSA –dname “cn=test.com” –alias client –keypass password –keystore client.jks –storepass password ? 把密钥库导出为证书文件 Keytool –export –trustcacerts –alias client –file client.cer –keystore client.jks –storepass password ? 把证书导入到 java Keytool –import –trustcacerts –alias client –file client.cer –keystore “%JAVA_HOME%/jre/lib/security/cacerts” –storepass password

? 证书位置配置 ? 生 成 的 server.cer,server.jks,client.cer,client.jks

在”%JAVA_HOME%/bin”中可以找到。 ? 在服务器端,将生成的 server.jks 文件拷贝至服务器端的 tomcat 目录下的 conf 目录下,本例为 D:\tomcat\conf 目录 ? 在客户端,将生成的 client.jks 文件拷贝至客户端 tomcat 目录下 的 conf 中,本例为 E:\tomcatClient\conf 下。 ? 将 生 成 的 client.jks 和 client.jks 拷 贝 至 客 户 端

的”%JAVA_HOME%/bin”中。 这里我们服务端和客户端为同一台机 器所以不需要在进行拷贝。

? 服务器端 tomcat 进行配置

解压 cas-server-3.4.10-release.zip,在 modules 下找到 cas-server-uber-webapp-3.4.10.war 放到 tomcat 下的 webapps 下,重 命名为 cas。

打开 tomcat 下 server.xml,这里为 D:\tomcat\conf\server.xml,添加 SSL 协 议 配 置 , 在 server.xml 中 , 将 <Connector port=”8443” protocol="HTTP/1.1" SSLEnabled="true" 找到改为如下设置, 这里我们 端口改为 443 端口。

将 server.xml 中包含 redirectPort="8443"的改为 redirectPort="443"。

服务器端配置完成后, 启动服务器端 tomcat, 检查 log 是否存在错误, 无误后在浏览器输入 https://test.com:443/cas 出现如下画面:

点击继续浏览此网站进入 cas 登陆界面,输入用户名和密码,在 cas 默认情况下输入的用户名和密码只要相同即可,输入完成登陆进去。

这说明 cas 服务端配置成功了。

? 客户端 tomcat 配置

客户端和服务端的 SSL 配置一致, 只是需要修改 server.jks 为 client.jks,

因为我的客户端和服务端 tomcat 在同一台机器上,为了避免启动时 出现端口占用情况,所以在客户端的 tomcat 的 server.xml 进行端口 修改。 <Server port="8005" shutdown="SHUTDOWN">修改为

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />修改为

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />修 改为

? 编写客户端代码进行测试

在 myeclipse 下创建 web 工程 SSO_Pro1,新建类 HelloWorldExample 解压 cas-client-java-2.1.1.zip 后在 dist 目录下找到 casclient.jar 将其拷 贝到

SSO_Pro1 下 WEB-INF 下的 lib 下。

在 web.xml 添加 CASFilter 与 servlet 映射 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<filter> <filter-name>CAS Filter</filter-name>

<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class> <init-param>

<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>

<param-value>https://test.com:443/cas/login</param-value> <!-- CAS 服务器地址 --> </init-param> <init-param>

<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name> <!-- CAS 服务器地址 -->

<param-value>https://test.com:443/cas/serviceValidate</param-value> </init-param> <init-param>

<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name > <param-value>10.1.0.38:9090</param-value>

</init-param> </filter> <filter-mapping> <filter-name>CAS Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

<servlet> <servlet-name>HelloWorldExample</servlet-name> <servlet-class>servlet.HelloWorldExample</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorldExample</servlet-name> <url-pattern>/servlet/helloWorldExample</url-pattern> </servlet-mapping> <servlet> <servlet-name>WelcomePage</servlet-name> <servlet-class>servlet.WelcomePage</servlet-class> </servlet> <servlet-mapping> <servlet-name>WelcomePage</servlet-name> <url-pattern>/servlet/welcomePage</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 同样,在 myeclipse 创建 web 工程 SSO_Pro2,将 SSO_Pro1 下的 HelloWroldExample 和 web.xml 拷 贝 到 SSO_Pro2 下 。 同 样 把 casclient.jar 将其拷贝到 SSO_Pro1 下 WEB-INF 下的 lib 下。

注: 这里为客户端机器的 ip 地 址和端口号 ? 测试实例,启动客户端和服务器端的 tomcat,检查 log 查看是

否出现问题,如果正确,在浏览器输入

http://test.com:9090/SSO_Pro1/servlet/helloWorldExample 出现认证界面,点击进去输入用户名密码,则提示登陆成功。 同样测试 SSO_Pro2 不需要登陆就可以进入工程界面。

继续浏览登录,输入用户名密码。测试。在未配置 ldap 之前,使用的用户名 和密码是相同的。

五、

CAS 配置 LDAP 实现定制的用户名,密码登陆。 ? 安装 apacheds-1.5.7-setup.exe 和 ApacheDirectoryStudio-win32-1.5.2.v20091211.exe , 安 装 完 成 后 在 windows 服务中启动

启动完成后在开始—程序中打开 Apache Directory Server。 ? 创建 Apache Directory Server 与 Apache Driectory Server 之间的链接。

这里我们已经建立了一个连接。 点击 建立新的连接。

这里按照上面填写,因为我们已经建立了 localhost 这里我们命名为 localhost1 可点击 进行测试,成功后点击 next 按钮。

输入完成后,密码为 secret 点击

进行验证。通

过后点击 next 进行设置,如无设置,点击 Finish。

完成后,打开连接。这里我们以 localhost 为例进行说明。如下如所 示:

这里有 uid=pt01 和 uid=pt02 这个 是之前建立的。在 system 下创建 pt03 用户。 点击 目。 ,new-new Context Entery 创建一个新的条

点击 next,添加所要的 schema

点击 Next,添加 uid=pt03.

点击 next,添加 cn,和 sn 属性的值。

同时添加 pt03 用户的密码这里为 echo。点击

点击 finish 。

输入密码 echo ,选择加密类型为 MD5.点击 ok。完成后如下所示

到处的 ldif 文件格式如下

在 Spring 官方网站找到 spring-ldap-1.3.0.RELEASE-all.jar 下载。将其添加 到 服 务 器 端 tomcat 下 cas lib 目 录 下 , 这 里 为

D:\tomcat\webapps\cas\WEB-INF\lib 。

在 解 压 的

cas-server-3.4.10

下 的

modules

下 找 到

cas-server-support-ldap-3.4.10.jar 放置到 tomcat 下 cas lib 目录下。

D:\tomcat\webapps\cas\WEB-INF

deployerConfigContext.xml 打开后添加 contextSource。

将 SimpleTestUsernamePasswordAuthenticationHandler 注释掉,添加 FastBindLdapAuthenticationHandler

重 启 服 务 端 tomcat , 查 看 log 没 有 错 误 。 在 浏 览 器 地 址 栏 输 入 https://test.com:443/cas, 用 我 们 之前 添 加 的用 户 测 试 , pt01/echo,pt02/echo , /pt03/echo 测试。 关闭,重启服务器和客户端 tomcat,查看启动日志确保没有出现异常,在地 址栏输入 http://test.com:9090/SSO_Pro1/servlet/helloWorldExample 输入上面的 用户名密码测试。 在访问 http://test.com:9090/SSO_Pro2/servlet/helloWorldExample 可以看到 访问 SSO_Pro2 时不需要输入用户名密码。那么我们的单点登录就成功了。 六 学习资料 http://docs.moodle.org/20/en/admin/auth/ldap 摩灯 LDAP 配置 1 摩灯 LDAP 配置 2

http://mediawiki.middlebury.edu/wiki/LIS/CASifying_Moodle

http://static.springsource.org/spring-ldap/docs/1.3.x/reference/html/user-authentic ation.html spring ldap 认证

http://www.doc88.com/p-03544419539.html 统一认证实现原理

http://mguessan.free.fr/nt/openldap_en.html

openLdap 命令行简单测试

http://blog.csdn.net/arlen_ye/article/details/4665461 cas 认证配置学习 http://zhangcb666.blog.163.com/blog/static/469635292010111733354146/ cas 配置说明

http://www.cnblogs.com/arix04/archive/2009/08/06/1540103.html sql 版认证扩展

尚学堂简例,

http://blog.csdn.net/tianlincao/article/details/5376208 cas 认证扩展 Oracle 版 http://www.zzbaike.com/wiki/Gallery:LDAP_authentication Ldap Php 嵌入版 http://yhjhappy234.blog.163.com/blog/static/31632832201061582556683/ HTTPS 协议搭载 SSl 配置全过程 http://www.yesky.com/ServerIndex/77125243130347520/20040509/1795316.shtml http://linux.chinaunix.net/techdoc/net/2007/10/16/970000.shtml http://www.openldap.org/doc/admin24/ openLdap admin 指导 http://www.bayour.com/LDAPv3-HOWTO.html LdapV3 证书协议 Apache 配 置

ldap 结合其他软件

三亿文库包含各类专业文献、生活休闲娱乐、文学作品欣赏、应用写作文书、中学教育、幼儿教育、小学教育、高等教育、各类资格考试、行业资料、专业论文、98windows下进行单点登录配置操作手册等内容

原创粉丝点击