用Yale CAS Server 来实现单点登陆(SSO)

本文详细介绍了如何使用Yale CAS Server实现单点登录(SSO)的功能,包括配置过程、客户端使用方法及具体实例。通过简单的步骤,实现了在不同服务器上的统一认证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用Yale CAS Server 来实现单点登陆(SSO)

CAS (Central Authentication Service)是Yale大学的ITS开发的一套JAVA实现的开源
ic#d-fBl;t e0的SSO(single sign-on)的服务。

这里用一个简单的例子来说明用CAS来实现单点登陆(SSO)。

Yale CAS Server 的配置过程

CAS (Central Authentication Service)是Yale大学的ITS开发的一套JAVA实现的开源
C A&R[ }C0的SSO(single sign-on)的服务。该服务是以一个java web app(eg:cas.war)来进行服务的,书生读吧],[-E%I,bCMWg
使用时需要将cas.war发布到一个servlet2.3兼容的服务器上,并且服务器需要支持SSL,
;Iccl+[+v,Js0在需要使用该服务的其他服务器(客户),只要进行简单的配置就可以实现SSO了。

CAS 的客户端可以有很多种,因为验证的结果是以XML的格式返回的,CAS的客户端已
;F7Aj[] {${2o0打包进去的有java,perl,python,asp,apache module等好几种客户端示例,你还可以根据书生读吧$Au RY.Mz E6m{A
需要实现一个自己的客户端,非常简单!~

下面我们以tomcat 5.0 为例进行说明(这里,我将Server和Client同时放在了同一个Tomcat服务器下)。
C9bX.Y j0书生读吧 }4?6~1|,d/XGo+w
1.下载cas-server和cas-client(可选,建议使用)
%z]7cLD:^s0http://www.yale.edu/tp/cas/cas-server-2.0.12.zip
(OhgxO:ln_t#?H0http://www.yale.edu/tp/cas/cas-client-2.0.11.zip书生读吧{I,W#QZr,T'OT

L4m(R X3fwy4~]7pf02.将cas-server-2.0.12.zip解压,并将lib/cas.war拷贝到webapps下
k'F%eJ Ej)]:B0
P)Q^w7E$aqC1\7C03.产生SERVER的证书
1O'ibJ#mDD3A0keytool -genkey -alias tomcat -keyalg RSA [-keystore keystore-file]书生读吧$LC-vSG"] w5c0L
书生读吧*IX W\3[-R:u
4.(在server)配置tomcat使用HTTPS书生读吧LBe:k `7Z0\
书生读吧(fA-BQ `$B \ j
$CATALINA_HOME/conf/server.xml里书生读吧Urt%z5@:]tS
<Connector className="org.apache.coyote.tomcat5.CoyoteConnector"port="8443" minProcessors="5" maxProcessors="75"enableLookups="true" disableUploadTimeout="true"acceptCount="100" debug="0" scheme="https"secure="true"><Factory className="org.apache.coyote.tomcat5.CoyoteServerSocketFactory"keystoreFile="/path/to/your/keystore-file"keystorePass="your-password" clientAuth="false" protocol="TLS" /></Connector>
(E,w$umw(K4c05.在要使用CAS的客户端应用里设置(以servlets-examples这个APP为例,在应用时,所有客户端均进行类似配置),我们使用ServletFilter(CAS client里提供的)来实现SSO的检查。书生读吧td:e h[m5~1B
书生读吧$g"Fe%G Z2Z
修改servlets-examples/WEB-INF/web.xml
?Qz*?4|O0<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://your.cas.server.name(这里为https://localhost):port(默认为8443)/cas/login</param-value></init-param><init-param><param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name><param-value>https://your.cas.server.name(这里为https://localhost):port(默认为8443)/cas/proxyValidate</param-value></init-param><init-param><param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name><param-value>your.client.server.name(这里为localhsot):port(默认8080)</param-value></init-param></filter><filter-mapping><filter-name>CASFilter</filter-name><url-pattern>/servlet/*</url-pattern></filter-mapping>书生读吧;V2HXm*_aA
6.将cas-client-2.0.11.zip解压,把java/lib/casclient.jar拷贝到client服务器上(这里为同一tomcat)的
Pwq8z;{j#y0webapps/servlets-examples/WEB-INF/lib目录下(如果没有就建一个)书生读吧 L6`3MSYT!k

zM^B+C S Y;i07.导出SERVER的证书,用来给所有需要用到的客户端导入书生读吧!V9Vq[vF2u3s bn
keytool -export -file myserver.cert -alias my-alias-name -keystore keystore-file书生读吧s[ P,P;zMP1SN

0m/nW$ZM0?08.在客户端的JVM(这里为同一JVM)里导入信任的SERVER的证书(根据情况有可能需要管理员权限)书生读吧3WU-[/f G7k
keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file myserver.cert -alias tomcat
;|H,~ a,@/n P0书生读吧 u} |'h9n1P z z&C/U
9.测试.书生读吧2^)erR3t9K
把server和client分别起来(这里为同一个Tomcat,实际应用时可以在多个服务器上,且client可以为多个应用),检查启动的LOG是否正常,如果一切OK,就访问书生读吧 us]$xe`e%wN
http://client1:8080/servlets-examples/servlet/HelloWorldExample书生读吧"kP1Qx$K}4\
系统会自动跳转到一个验证页面,随便输入一个相同的账号,密码,严正通过之后就会访问
4ki'\C&Q v@ j0到真正的HelloWorldExample这个servlet了
_ A4\ik@0书生读吧7};fo lle-vp3W
10.其他书生读吧9EV6w6B:E_
登陆过后,无论多少个client,在各自的session里面有相同的用户信息(用户名),默认的情况下,可以通过session.getAttribute("edu.yale.its.tp.cas.client.filter.user")取得登陆名。
d:]kp.kb0   由于CAS为完全开源项目,可以根据自己项目修改源代码(比如,登陆验证,肯定得根据实际项目修改,以及登陆页面等)。书生读吧c9cB_YaK KyZ'Y
更多信息请参考
df8? ~5~}3O7u0http://www.yale.edu/tp/cas/
OX(i&]3n0h+A/R0http://www-106.ibm.com/developerworks/web/library/wa-singlesign/
2L8D5N } Mf'R m/Ov0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值