在Weblogic中使用Yale CAS实现单点登陆(SSO)

来源:互联网 发布:淘宝与网站合作方案 编辑:程序博客网 时间:2024/04/29 22:22
Weblogic中使用Yale CAS实现单点登陆(SSO)

耶鲁大学开发的单点登录系统称为CAS(Central Authentication Server)被设计成一个独立的Web应用程序(cas.war)。它目前用几个Java Servlet作为实现并且通过一个Https服务器来运行。要使用单点登陆功能的Web应用作为CAS的一个客户端来运行。

由于CAS使用Https协议,所以首先要知道如何在容器中配置SSL。Weblogic的SSL配置相对其它的容器较为复杂,但SSL配置完成后CAS服务器一般都能正常运行了。
CAS的客户端以一个Web应用的Filter运行。当Web应用的某个功能被请求时,Filter就会拦截应用的URL,从而迫使用户到CAS服务器进行登陆。在所有不同的Web应用中,使用同一个CAS服务器进行登陆,即可达到单点登陆之目的。

本文使用Weblogic(版本Weblogic8.1)配置CAS服务器,使用Tomcat(版本Tomcat5.0.30)配置CAS客户端,分别在7002端口及8080端口。下面是在Weblogic中使用Yale CAS实现单点登陆的详细步骤:

1.  安装CAS服务器

1.1.  下载CAS发行包,下载地址:

CAS服务器:http://www.yale.edu/tp/cas/cas-server-2.0.12.zip 或
https://clearinghouse.ja-sig.org/wiki/download/attachments/924/cas-server-2.0.12.zip
CAS客户端:http://www.yale.edu/tp/cas/cas-client-2.0.11.zip 或
https://clearinghouse.ja-sig.org/wiki/download/attachments/827/cas-client-2.0.11.zip

1.2.     将cas-server-2.0.12.zip解压,并将lib/cas.war拷贝到%bea%/user_projects/domains/mydomain/applications下,测试CAS服务器是否发布正常,可以访问http://localhost:7001/cas/login 出现登陆窗口。输入用户名密码(用户名=密码),出现登陆成功页面说明发布正常。若不能访问可以手工发布再试。

2.   配置Weblogic使用https协议

2.1.        Server证书申请

不管是tomcat或weblogic,在配置ssl之前,必须获取证书签发机构对你的server签发的认证证书,步骤如下:
2.1.1.       本地生成证书请求CRS,文件名为serverReq  -à

a)keytool -genkey -keystore ./serverstore -keyalg RSA -keysize 512 -validity 3650 -alias server  (生成默认秘锁库,密锁长度为512主要是因为weblogic对密锁强度有出口限制)
根据提示回答,注意在一开始问“你的名字”或“DName”的时候,必须填写你服务器所在域名;注意记住密锁库密码和私锁密码

b)keytool -certreq -keystore ./serverstore  -alias server -file ./serverReq

2.1.2.       从CA机构获取server证书:

       a)打开步骤1中生成的serverReq文件,复制其内容

       b)打开https://testca.netca.net/apply_srv/srv_root.asp网站,

先点“安装证书联”,提示下载serverRoot.p7b格式根证书文件

保存后,点“继续“,进入证书申请界面,填写相关信息,并把步骤a 中复制的内容粘贴到最后一栏,特别提醒的是正确“请输入使用该证书的机器的域名”一栏,必须和生成CRS时填写的名字一样。之后,系统会生成你的server证书,并根据提示下载证书保存到本地,文件为:server

 

2.1.3.       导出p7b格式根证书链。

    双击下载后的serverRoot.p7b文件,依次打开:

点导出

分别导出的文件名为root.cer,ca.cer

这样你就有了完整的证书链:root.cer , ca.cer , server.cer

一个密锁库文件:serverstore  ,密锁库密码是:*******, 私锁是:**********(千万记好了,后面需要用到)

 

2.1.4.       导入证书链到密锁库serverstore

       a)导入root证书
              keytool -import -trustcacerts -keystore serverstore -alias root -file ./root.cer

       a)导入ca证书
              keytool -import -trustcacerts -keystore serverstore -alias ca -file ./ca.cer

a)导入server证书
              keytool -import -keystore serverstore -alias server -file ./server.cer

这样,你的密锁库中就保存了ca的根证书和你的server证书。:)

2.1.5.       导入证书到Weblogic使用的JDK密锁库cacerts中

a)导入root证书
              keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -alias root -file ./root.cer

       a)导入ca证书
              keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -alias ca -file ./ca.cer

a)导入server证书
              keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -alias server -file ./server.cer

注意:密锁库cacerts的初始密码为changeit
2.2.   weblogic配置ssl
2.2.1.       配置ssl
打开weblogic控制台,选如图页:keystores & ssl

点chage,然后选custom identity and standard trust,进入keystore配置页:

Custom identity key store file name:密锁库所在路径全名

Custom identity key store pass phrase:填写打开密锁库的密码(在步骤一中生成密锁库的密码,忘了吧?)

…………..

Java standar trust key store pass phrase: 填写打开密锁库的密码(同上)

 
填完后,点continue,进入信任证书别名填写:

 

Private key alias :填写server证书别名:server(请参考步骤一中第4步)

Passphrase:别名对应私锁的密码
 
然后continu,finish.
 
2.2.2.       使ssl生效
打开general页,把ssl listen port enabled勾上,并填写ssl监听端口:443

 
       保存后,重启weblogic.
 
       注意,1)如果系统是linux,且ssl端口小于443,必须用root权限帐号启动.
                     2)如果端口小于1024,必须修改安全文件,放开443端口的操作权限。
 

最后启动weblogic(linux画面)

Ok,成功。
 
启动后,打开浏览器,输入:  https://域名/应用  如果浏览起没有安装前面的3个证书,会提示需要安装,否则,可以正常浏览,ok。
访问https://localhost:8443/cas/login ,若成功访问说明SSL配置成功。

3.      配置 CAS客户端

以Tomcat中自带的Servlet examples应用为例,在Web应用中使用配置CAS客户端。

3.1.        在Servlet examples应用里配置CAS客户端,需修改servlets-examples/WEB-INF/web.xml,在web.xml文件中,加入如下Filter配置:

    <filter>
        <filter-name>CASFilter</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://localhost:7002/cas/login</param-value>
        </init-param>
        <init-param>
        <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
        <param-value>https://localhost:7002/cas/proxyValidate
</param-value>
        </init-param>
        <init-param>            <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
            <param-value>localhost:8080</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CASFilter</filter-name>
        <url-pattern>/servlet/*</url-pattern>s
    </filter-mapping>
其中,第一,二个localhost都改成CAS服务器域名或主机名(与Server证书中域名相同),第三个改成你servelt example应用域名或主机名。

3.2.     将cas-client-2.0.11.zip解压,把java/lib/casclient.jar拷贝到Tomcat的
webapps/servlets-examples/WEB-INF/lib目录下(如果没有就建一个)

3.3.     在客户端的JVM 里导入信任的SERVER的证书,输入keystore密码时,注意现在的keystore为cacerts,而cacerts的初密码为 changeit,而不是前面keystore-file的密码,所以要是没有改过cacerts密码应该输入changeit.

a)导入root证书
              keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -alias root -file ./root.cer

       a)导入ca证书
              keytool -import -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -alias ca -file ./ca.cer

a)导入server证书
              keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -alias server -file ./server.cer

其中,$JAVA_HOME改成JDK的绝对路径。

4.         测试SSO

启动Weblogic及Tomcat,访问http://localhost:8080/servlets-examples/ ,随便执行一个servlet,系统会自动跳转到一个验证页面,随便输入一个相同的账号,密码,认证通过之后,就会访问到你点击的servlet了。
 
 

原创粉丝点击