单点登录系统CAS搭建及取得更多用户信息的实现

 

一、            单点登录简介

单点登录(Single sign-on,简称为 SSO),是目前比较流行的企业业务整合的解决方案之一。其简单定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。类似的,用户只需要执行一次退出操作就可以终止对所有相关应用系统的访问。

本文主旨在介绍如何使用CAS实现单点登录时取得更多的用户信息,单点登录的原理将不作阐述。

二、            CAS简介

CASCentralAuthentication Service即中央认证服务的简称,它是由耶鲁大学发起的开源项目,其目的是为Web系统提供可靠的单点登录机制。200412CAS正式成为JASIG(jasig.org)的一个项目。

CASServer需要作为独立Web应用部署,并且当前Server仅支持Java,但其Client端则支持Java.NetPHPPerlApacheuPortalRuby等多种开发语言。

各版本的CAS可以分别从以下地址下载。

CAS Server的下载地址:http://downloads.jasig.org/cas/

CAS Client的下载地址:http://downloads.jasig.org/cas-clients/

本文验证环境使用CASServer 3.5.2CAS Client 3.2.1(Java Client)CAS1.3.2(PHP Client)。当前网上可查找到的大部分资料并不适用于CAS Server 3.5.2,因此如果使用其它版本本文可能也存在不适用的情况。

三、            CAS部署、基本配置与使用

1.      Server端部署

将下载的CASServer压缩包解压,可以发现这个包中已经包含了Server侧的全部源代码及编译完成的Jarwar包。将modules目录下的cas-server-webapp-3.5.2.war拷贝至Tomcatwebapps下后启动Tomcat即可完成部署。

上述war包中包含了Server的版本号,因此部署完成后的应用访问URL中也会包含版本信息。如果期望为Client端提供更多的伸缩性和兼容性,可以在启动Tomcat前将war包的名称修改为cas.war。这样如果以后Server端进行升级,Client端也不需要做任何修改。

部署完成并启动Tomcat以后,就可以在浏览器中输入对应的URL(例如:http://192.168.202.176:8080/cas)访问CAS了。CAS Server提供的默认界面如下图所示。

UsernamePassword输入框中输入相同的字符即可成功登录,登录成功后的界面如下图。

2.      Server端配置

上述部署完成的Server存在两个问题,一是通过HTTP协议访问服务安全性较差,通常应当使用HTTPS协议以提供较高的安全性;另一方面登录账号与密码其实与系统不存在关联,不能在实际应用中加以使用,因此需要进一步做一些配置解决上述问题。

2.1 配置TomcatHTTPS协议

Tomcat配置HTTPS协议分为两步,一是为Tomcat生成服务证书并将对应CA根证书导入keystore的可信列表中,二是修改Tomcat的配置文件。

关于证书生成,不同的应用场景与需求其具体过程会有一些差异。如果对此没有特殊要求,可以采用最为简单的自签名证书。其具体生成过程简述如下:

创建一个用于保存证书的目录,然后通过cmd命令进入命令提示符窗口,并将当前工作目录切换至刚刚创建的用于保存证书的目录(Linux系统过程类似)。随后执行以下命令,其中红色部分可以根据实际需要加以替换:

keytool-genkey -aliascas_key -keyalg RSA -storepass yanzhijun -keystore cas.keystore-validity 3600

注意:如果上述命令执行时提示找不到keytool,请检查环境变量JAVA_HOMEPATH是否已正确配置。

随后,keytool会提示输入一些与证书相关的信息,例如可以依次输入下图中所示值。其中特别要注意的是要输入的第一项“passport.yanzhijun.net”必须要输入CAS Server的实际域名或IP,否则在后面建立HTTPS连接时将不能建立可信连接。其它项可以根据实际情况输入或随意输入合法值即可。

上述命令成功执行以后,将生成名为cas.keystore的文件,Tomcat将使用它来建立HTTPS连接。

通常CAS Client端与Server端进行通信时也使用HTTPS协议并通过证书对Server进行身份确认,因此还需要将上述步骤中生成的证书导出备用。以下命令将证书导出为名为cas.cer的文件:

keytool-export -trustcacerts -alias cas_key -file cas.cer -keystore cas.keystore-storepass yanzhijun

注意:上述命令中的参数要与生成证书的命令中的参数保持对应一致。

完成证书生成以后,还需要对Tomcat的配置文件conf/server.xml进行修改。首先将标签Connectorport="8443"前后的注释删除,然后将其修改为类似以下内容:

<Connectorport="8443"protocol="org.apache.coyote.http11.Http11NioProtocol"SSLEnabled="true"

              maxThreads="150" scheme="https"secure="true"

              clientAuth="false" sslProtocol="TLS"

              keystoreFile="C:/cert/cas.keystore"

                keystorePass="yanzhijun"/>

注意:keystoreFilekeystorePass要与生成证书时输入的参数保持一致。

至此,TomcatHTTPS协议配置完成,重新启动Tomcat,就可以使用HTTPS协议访问

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
CAS(Central Authentication Service)是一种单点登录协议,可以实现在多个应用系统中,用户只需要登录一次就可以访问所有应用系统。 要实现CAS单点登录,需要以下步骤: 1. 部署CAS服务器:CAS服务器是一个独立的单点登录服务器,可以独立部署或者和其他应用部署在同一台服务器上。 2. 配置CAS服务器:CAS服务器需要配置认证方式、用户信息源等信息。可以使用LDAP、数据库等多种方式来存储用户信息。 3. 集成应用系统:在每个需要单点登录的应用系统中,需要添加CAS客户端组件,与CAS服务器进行通信,实现单点登录功能。 4. 用户认证流程:当用户访问一个需要认证的应用系统时,应用系统会重定向到CAS服务器进行认证;如果用户已经登录过其他应用系统,则CAS服务器会返回认证成功的信息,并重定向回应用系统,同时在用户浏览器中设置一个CAS票据;如果用户没有登录过,则CAS服务器会要求用户进行认证,并在认证成功后返回CAS票据。 5. 应用系统认证流程:当用户访问其他应用系统时,应用系统会检查用户浏览器中是否存在CAS票据,如果存在,则向CAS服务器发送请求,验证票据是否有效;如果有效,则认为用户已经通过认证,允许用户访问应用系统;如果无效,则要求用户重新进行认证。 以上是CAS单点登录的基本实现步骤,具体实现细节会因为不同的应用场景和技术栈而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值