`
wangzhen5
  • 浏览: 80808 次
  • 性别: 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文件中...

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

    **基于Java语言开发的CAS单点登录系统** CAS(Central Authentication Service)是一种广泛使用的开源单点登录(Single Sign-On,SSO)框架,主要由耶鲁大学开发并维护。它旨在提供一种简单、安全的方式,使得用户...

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

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

    cas 单点登录 解决方案.

    3. 系统集成:cas 单点登录解决方案需要与不同的应用系统集成,以便用户可以使用单点登录访问所有相互信任的应用系统。 cas 单点登录解决方案可以带来许多好处,但是也存在一些挑战和限制。例如,cas 单点登录解决...

    CAS单点登录系统.doc

    ### CAS单点登录系统知识点详解 #### 一、CAS简介 CAS(Central Authentication Service)是由耶鲁大学发起的一项开源项目,其目标在于为Web应用提供可靠且统一的单点登录解决方案。自2004年12月起,CAS成为了JA-...

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

    总结来说,基于LDAP的CAS单点登录系统是解决多应用系统登录难题的有效工具。它结合了LDAP的用户管理优势和CAS的集中认证特性,提供了统一的用户登录体验,简化了系统管理,并为信息共享与服务提供了安全保障。对于...

    cas单点登录

    总之,CAS单点登录系统提供了统一的身份验证入口,简化了用户登录过程,提高了用户体验。通过理解和实践CAS Server的配置以及客户端的集成,开发者可以有效地在自己的应用环境中实现单点登录功能。

    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单点登录配置

    CAS(Central Authentication Service,中央认证服务)是一种广泛...通过学习这些文档,你应该能够成功地配置和实施CAS单点登录系统。记住,实践是检验真理的唯一标准,理论知识结合实际操作才能更好地掌握CAS的配置。

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

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

    CAS单点登录系统,集成dubbo服务.zip

    在"标题"中提到的"CAS单点登录系统,集成dubbo服务",意味着这个项目将CAS与Apache Dubbo服务进行了整合。Dubbo是一个高性能、轻量级的Java RPC框架,常用于构建分布式服务。集成CAS后,Dubbo服务可以在同一个认证...

    CAS单点登录例子,包含服务端和客户端

    CAS单点登录系统广泛应用于企业、学校等环境,用于统一管理多个内部系统,提高用户体验,同时简化安全管理。 综上所述,这个压缩包提供了一个完整的CAS单点登录实例,包括服务端和客户端的实现,可以帮助开发者理解...

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

    【标题】中的“管理系统系列--cas单点登录系统”指的是一个专为IT管理设计的解决方案,其中涵盖了CAS(Central Authentication Service)单点登录系统。CAS是一种开放源代码的Web身份验证框架,它允许用户在访问多个...

    CAS单点登录操作文档

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

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

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

    CAS单点登录demo

    在本“CAS单点登录demo”中,我们将深入探讨CAS的工作原理、配置步骤以及如何实现客户端与服务器端的交互。 1. CAS工作原理: CAS的核心思想是集中式的身份验证,用户只需在一个地方进行登录,之后访问其他已经...

    cas单点登录4.0

    CAS(Central Authentication Service)是...总之,"cas单点登录4.0"的资源对于学习和实践CAS单点登录系统非常重要。无论是部署和配置CAS服务器,还是深入研究其源代码,都能帮助我们更全面地理解和掌握单点登录技术。

Global site tag (gtag.js) - Google Analytics