`
wangzhen5
  • 浏览: 79257 次
  • 性别: Icon_minigender_1
  • 来自: 河南省
社区版块
存档分类
最新评论

CAS单点登录系统

阅读更多
CAS单点登录系统
环境:redhat5.0 enterprise
tomcat 5.5
mysql-5.0.22-2.1.0.1
单点登录系统简介,这是引用别人的原话,原文地址是http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html

     
CAS 介绍

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

开源的企业级单点登录解决方案。
CAS Server 为需要独立部署的 Web 应用。
CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
CAS 原理和协议

从 结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:


图 1. CAS 基础协议


CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。

在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。

另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。

首先下载CAS server和client

到 CAS 官方网站下载 CAS Server 和 Client,地址分别为:

http://www.jasig.org/cas/download

http://www.ja-sig.org/downloads/cas-clients

我下载的是cas-client-java-3.0.0.zip和cas-server-3.3.1-release.tar.gz这两个包。

由于CAS认证是基于SSL协议的,所以我们先安装SSL证书。(注,下面命令中黄色的字体代表用户自己设置的值)

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore "/usr/local/tomcat/server.keystore"

接下来会让你设置密码,然后注意填写姓名的时候填写localhost,这是考虑到后面连接数据库。然后后面随便写。

然后导出证书

$JAVA_HOME/bin/keytool -export -alias tomcat -file server.cert -keystore "/usr/local/tomcat/server.keystore"

然后导入到我们的授权证书中

$JAVA_HOME/bin/keytool -import -trustcacerts -file server.cert -keystore $JAVA_HOME/jre/lib/security/cacerts (注,这时输入默认的密码:changeit)


这时证书就安装完毕了。

下面修改配置文件,首先修改tomcat/conf/server.xml,找到下面这段关于SSL的语句

<Connector port="8443" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />


把这段话的注释去掉,并在里面加上keystoreFile="/usr/local/tomcat/server.keystore" keystorePass="123456"这两句,这是定义你自己的设置的keystore路径和密钥的密码。如果你使用默认的,(keystore 放在tomcat下,keystorePass为changeit)那么不用加这两句话。

接下来解压下载的CAS-server文件包cas-server-3.3.1-release.tar.gz,把其中的moudules中的cas-server-webapp-3.3.1.war复制到tomcat/webapps目录下,并且改名为cas.war,这个文件会自动解压生成个cas的目录

,到这里,由于已经布置好了SSL协议,可以检验一下SSL是否成功了,重启tomcat,然后打开浏览器输入https://localhost:8443/cas

如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。

下面是关键的一步:扩展认证接口

CAS 提供扩展认证的核心是 AuthenticationHandler 接口,这里要看详细的介绍还是去http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html,或者CAS的官网www.jasig.org/cas。

我使用的是通过JDBC认证

这里要连接数据库,通过将用户输入的用户名和密码,和数据库中的数据对照,如果数据库中存在,那么通过,如果没有,那么认证失败,用户不能登录。

具体做法如下:

首先在数据库中添加一个用户casserver,密码是casserver。然后添加database cas,添加个一个tables app_user,并赋值给他。

mysql> create databases cas;

mysql> use cas;

mysql> create table app_user (username varchar(30) not null default'', password varchar(45) not null default'', primary key (username));
mysql> insert into app_user (username,password) values ('test01','psw01'),('test02','psw02');
找 到刚才解压到tomcat/webapps的那个cas包,修改在cas/WEB-INF/目录下的deployerConfigContext.xml 文件。找到这段话<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
由于我使用的是mysql数据库,因此在后面添加
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
       <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
       <property name="url"><value>jdbc:mysql://192.168.2.137:3306/cas</value></property>
       <property name="username"><value>casserver</value></property>
       <property name="password"><value>casserver</value></property>
</bean>
再找到这段话
<bean
                class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
将它注释掉,在其下面放入我们的认证方式
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
        <property name="sql" value="select password from app_user where username=?" />
      <property name="dataSource" ref="dataSource" />
</bean>
接下来,要实现功能,还得要添加一些必要的模块驱动,如mysql.jar等,总共七个文件,我是全部放进去了:
spring-jdbc.jar                      commons-dbcp-1.2.2.jar
mysql.jar                            commons-collections-3.2.1.jar
mysql-connector-java-3.1.11-bin.jar cas-server-support-jdbc-3.3.1.jar
commons-pool-1.3.jar
将他们全都拷贝到tomcat/webapps/cas/WEB-INF/lib。
到这里就OK了,这时再重启tomcat,打开https://localhost:8443/cas
会发现如果输入的用户名和密码和数据库中的不一致,认证就不能通过。这表明数据库认证已经起作用了。
分享到:
评论

相关推荐

    cas单点登录系统

    cas单点登录系统,带源码,可定制开发;CASServer负责完成对用户的认证工作,CASServer需要独立部署,CASServer处理用户名/密码等凭证(Credentials)验证,它可能会到数据库检索一条用户帐号信息,也可能在XML文件中...

    CAS单点登录系统之java实现(part_1)

    资源列表(1:cas CAS Server,2:Cas_Client_One 授权系统,3:graduationDesign 用户组织管理系统,4:CAS单点登录论文.doc,5:CAS单点登录文献综述.doc,6:基于CAS的用户管理单点登录门户系统ppt.ppt)

    基于java语言开发的cas单点登录系统

    cas单点登录系统,其中包括cas认证服务,配置中心,监控平台,服务管理的高可用项目

    CAS单点登录系统之java实现(part_2)

    资源列表(1:cas CAS Server,2:Cas_Client_One 授权系统,3:graduationDesign 用户组织管理系统,4:CAS单点登录论文.doc,5:CAS单点登录文献综述.doc,6:基于CAS的用户管理单点登录门户系统ppt.ppt)

    CAS单点登录系统.doc

    CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: • 开源的企业级单点登录解决方案。 • CAS Server ...

    基于Java集成CAS单点登录【接部署即可启用】

    基于Java中CAS的单点登录,有服务端的所有源码,将tomcat目录下的所有资源直接拷到Tomcat服务中间件的webapp目录下,阅读tomcat-webapp中的read.txt文档,查看使用说明,适用于第一次开发CAS单点登录的同学们,简单...

    CAS单点登录操作文档

    CAS单点登录操作文档 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: • 开源的企业级单点登录解决...

    基于用户映射的CAS单点登录系统设计与实现

    基于用户映射的CAS单点登录系统设计与实现,校图书馆下载的资料,希望对大家有用。

    基于LDAP的CAS单点登录系统设计和实现

    基于LDAP的CAS单点登录系统设计,详细的解决方案,是做项目实践的好参考

    shiro+cas单点登录技术分析

    分析shiro框架+cas单点登录系统的技术分析,解析了相关的技术难点

    禅道开源版集成CAS单点登录

    本文在已有的禅道集成CAS单点登录的客户端插件基础上进行的修改,因原有插件在我们的系统上调试无法成功,做了一些定制,环境如下: 1. CAS server 版本:4.0.0 2. 禅道开源版本: 9.6.3 3. 禅道CAS client 插件版本...

    cas单点登录技术

    1 单点登录总体解决方案 2 CAS原理和协议 3 CAS安全性 4 CAS工作模式 5 系统设计方案 6 CAS关键技术 6.1 域名规范 6.2 中文用户登录提交时乱码 ...7 单点登录风险 ...9.3 TOMCAT中使用CAS实现单点登录LDAP方式

    集成cas实现单点登录认证.zip

    集成cas实现单点登录认证.zip

    管理系统系列--cas单点登录系统,其中包括cas认证服务,配置中心,监控平台,服务管理的高可用项目.zip

    管理系统系列--cas单点登录系统,其中包括cas认证服务,配置中心,监控平台,服务管理的高可用项目

    论文研究-基于LDAP的CAS单点登录系统的设计与实现 .pdf

    基于LDAP的CAS单点登录系统的设计与实现,张永强,陈伟,随着交通运输行业信息化不断发展,逐步建立了各类信息化应用系统。但各个应用系统的用户管理、系统登录自成体系,导致用户每使用

    cas单点登录客户端--c++版

    cas单点登录客户端c++版

    java-cas单点登录服务端

    CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: 开源的企业级单点登录解决方案。 CAS Server 为需要...

    CAS单点登录服务器端源码

    CAS单点登录服务器端源码,实现应用系统集成CAS单点登录。

    CAS单点登录

    java高级开发必备之多系统单点登陆原理和简要demo讲解PPT,内容很详细。

    CAS单点登录(SSO)教程

    单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication ...

Global site tag (gtag.js) - Google Analytics