当前位置:文档之家› CAS学习笔记

CAS学习笔记

CAS学习笔记
CAS学习笔记

目录

第一部分CAS的理论思想学习 (3)

第一章CAS (3)

1.1 CAS的背景知识 (3)

1.1.1 什么是SSO(Single Sign On)单点登录: (3)

1.1.2 JA-SIG(CAS)的设计愿景: (3)

1.2 CAS的实现 (3)

1.2.1 CAS的程序逻辑实现 (3)

1.2.2 CAS服务的具体实现 (4)

1.2.3 CAS2.0系统中的用到的凭证(ticket) (5)

1.2.4 CAS2.0代理认证流程 (5)

第二部分CAS的几种语言客户端介绍 (6)

第二章CAS服务器的搭建 (8)

2.1 下载所需软件 (8)

2.2 配置运行环境 (8)

2.3配置CAS 服务器 (8)

第三章CAS-JAVA (10)

3.1 JAVA运行环境安装 (10)

3.2 CAS简单登陆的实现 (10)

3.3 CAS登出 (10)

第四章CAS-PHP (12)

4.1 CAS单点登录测试环境搭建步骤 (12)

4.1.1下载必要的软件: (12)

4.1.2搭建php运行环境 (12)

4.1.3配置PHP cas 客户端测试程序 (12)

4.2 PHP-CAS客户端 (13)

4.2.1 cas-client的初始化 (13)

4.2.2设置不是SSL的CAS认证 (15)

4.2.3 进行CAS认证 (16)

4.2.4 登出 (19)

第五章https://www.doczj.com/doc/9d14081807.html, (20)

5.1 搭建https://www.doczj.com/doc/9d14081807.html,环境 (20)

5.2 CAS简单登陆实现 (20)

5.3 CAS登出实现 (22)

第六章CAS-ASP (23)

6.1搭建ASP环境 (23)

6.2 CAS简单登录实现 (23)

6.3 CAS登出实现 (24)

小结: (25)

第七章业务授权 (26)

第七章用户注册 (29)

待续...... . (29)

附录1 (30)

附录2 (32)

附录3 (33)

附录4 (35)

附录5 (35)

第一部分CAS的理论思想学习

了解CAS的设计背景和思想以及CAS-Server提供的三个验证服务接口(web服务URL),和重定向的一些概念。同时分析CAS的业务流程,为下面的业务实现打下理论基础。

第一章CAS

1.1 CAS的背景知识

1.1.1 什么是SSO(Single Sign On)单点登录:

所谓单点登录是指基于用户/会话认证的一个过程,用户只需一次性提供凭证(仅一次登录),就可以访问多个应用。

目前单点登录主要基于Web的多种应用程序,即通过浏览器实现对多个B/S架构应用的统一账户认证。

1.1.2 JA-SIG(CAS)的设计愿景:

简单的说,CAS(Central Authentication Service –中心认证服务)的目的就是使分布在一个企业内部各个不同异构系统的认证工作集中在一起,通过一个公用的认证系统统一管理和验证用户的身份。在CAS上认证的用户将获得CAS颁发的一个证书,使用这个证书,用户可以在承认CAS证书的各个系统上自由穿梭访问,不需要再次的登录认证。打个比方:对于加入欧盟的国家而言,在他们国家中的公民可以凭借着自己的身份证,在整个欧洲旅行,不用签证。对于企业内部系统而言,CAS就是这个颁发欧盟认证的系统,其它系统都是加入欧盟的国家,它们要共同遵守和承认CAS的认证规则。

因此CAS的设计愿望就是:

1.实现一个易用的、能跨不同Web应用的单点登录认证中心;

2.实现统一的用户身份和密钥管理,减少多套密码系统造成的管理成本和安全漏洞;

3.降低认证模块在IT系统设计中的耦合度,提供更好的SOA设计和更弹性的安全策略。

1.2 CAS的实现

1.2.1 CAS的程序逻辑实现

要完成认证业务,CAS需要一个认证中心服务器CAS -Server和嵌入在不同业务系统方的认证客户端CAS-Client的协同。

在CAS1.0协议中,CAS-Server提供的三个验证服务接口(web服务URL):

1. 用户登录URL,形如https://casserver/cas/servlet/login

2. 用户凭证校验URL,形如https://casserver/cas/servlet/validate

3. 用户登出URL,形如https://casserver/cas/servlet/logout

在CAS-Client端,CAS提供了多样化的语言支持,其中用于java的是一个casclient.jar 包。目前的版本为2.1.1,其中提供了三种形式的凭证校验:

1. 用于Java Servlets的Filter —edu.yale.its.tp.cas.client.filter.CASFilter

2. 用于JSP页面的CAS Tag Library

3. 通用Java API Object — ServiceTicketValidator / ProxyTicketValidator

第一和第二种形式一般多用于B/S模式,第三种一般用于C/S模式。

1.2.2 CAS服务的具体实现

环境假设:用户User要访问业务系统Biz;Biz系统部署在bizserver上;CAS的系统搭建在服务器casserver上。具体实现如下图1:

验证用户名、密码

验证唯一识别参数ticket

图1:CAS服务的具体实现

备注:

redirect(1):https://casserver/cas/servlet/login?service=http://bizserver/index.jsp

重定向至casserver同时将用户的目标地址传递给CAS服务器。

redirect(2):http://bizserver/index.jsp?ticket=casticket

ticket是由CAS服务器生成的唯一识别标识。

redirect(3):https://casserver/cas/servlet/validate?service=http://bizserver/index.jsp&ticket=casticket

重定向至casserver验证ticket

图例说明:

Step1: 用户第一次访问Biz系统主页http://bizserver/index.jsp ;部署在Biz系统上的CASFilte 发现用户尚未登录,将用户重定向redirect(1)至CAS登录界面,同时在重定向的URL上用service参数将用户的目标地址传给CAS服务器。

Step2:用户在CAS的登录页上输入用户名密码登录,CAS服务器认证通过后,生成一个ticket,并带在目标地址的尾部返回客户端的浏览器redirect(2)。

Step3:客户端浏览器获得CAS服务器的认证应答,取得凭证ticket后,使用重定向的链接redirect(2)访问Biz服务。以此同时Biz服务识别用户并授予权限。

Step4: BizServer上的CASFilter再次过滤访问请求,并获得ticket凭证。Filter将使用该凭证通过URL(3)向CAS认证中心确认对应的服务请求和凭证是否有效。根据CAS服务器返回的结果,如果凭证有效,则CASFilter允许用户进入http://bizserver/index.jsp 所指向的页面;否则,再次重定向redirect(1)要求用户进行认证。

1.2.3 CAS2.0系统中的用到的凭证(ticket)

Ticket-granting cookie(TGC) 凭证存放cookie

它是存放用户身份认证凭证的cookie,在浏览器和CAS间通讯时使用,并且只能基于安全通道HTTPS。它是CAS用来明确用户身份的凭证,是实现web系统SSO的可选方案之一。

Service ticket(ST) 服务许可证

Service ticket凭证由CAS服务器发出,通过客户端浏览器,到达业务服务器(通过URL 重定向和ticket参数来实现)。每个ST只能使用一次,针对特定的服务生成唯一识别码。

Proxy-granting ticket(PGT) 代理授权许可证

该许可证由CAS服务器颁发给拥有ST凭证的服务(如果一个服务自身没有获得ST凭证,是不可能获得PGT的)。该许可证绑定一个用户的一个特定服务,使其拥有向CAS服务器申请,以获得“代理凭证Proxy-tickets”的能力。

Proxy-granting ticket IOU(PGTIOU) 代理授权许可证索引

这个许可证索引将通过凭证校验时的应答信息由CAS服务器端返回给CAS客户端。与此同时,与该索引对应的PGT将通过回调链接传给web应用。Web应用必须维护着PGT索引和PGT之间映射关系的内存表。

Proxy ticket(PT)

代理许可证是应用程序代理用户身份,对目标程序进行访问的凭证。代理许可证保存有代理及代理们进行逐级访问过程的信息。一个代理访问的有可能是另一个更高级的代理,因此PT可以用来获取下一级代理的PGT。这些逐级生成的PGT将保存有从用户到最终目标之间的代理队列的完整信息。

1.2.4 CAS2.0代理认证流程

以下的流程图模拟用户AT通过Portal向他的IMAP邮件服务器请求电子邮件的认证过程。在该过程中,充当Service和Proxy两个角色的Portal使用CAS Filter对访问其自身的用户进行CAS认证;同时Portal要使用ProxyTicketReceptor servlet接收来自CAS server的PGT信息,并使用ProxyTicketValidator对象向CAS获取访问IMAP服务器的Proxy Ticket凭证;最终从IMAP服务器上获取AT用户的mail信息。同样的,这里的IMAP服务器也要接受并认可CAS 对其用户的认证管理,同时它自己也成为二级Proxy,在有需要的情况下,一样可以向它的back-end Service发起Proxy Authentication代理认证请求。见下图2:

图2:CAS2.0代理认证流程图

CAS的代理模式一般用于C/S模式下,在现在B/S的模式下一般不用,所以我们不用太了解代理模式的实现,重点放在CAS的一般认证过程。

第二部分CAS的几种语言客户端介绍

下面讲述了PHP、https://www.doczj.com/doc/9d14081807.html,、ASP几种语言的CAS客户端的实现。通过第一部分我们了解了CAS认证的业务流程,下面我们就大概的讲述下从业务服务器重定向至CAS服务器再从CAS服务器重定向至业务服务器等业务的语言逻辑实现。

问题:

如何从业务服务器重定向至CAS服务器进行用户登录(没登陆情况下)并认证成功后返回到业务系统

业务系统如何知道该用户是通过了CAS服务器认证

业务系统知道该用户通过了CAS服务器认证后如何进行分配权限等用户信息

业务系统如何进行用户登出并告知CAS服务器该用户登出

上面这些问题其实在第一部分有讲到解决办法,就是CAS-Server提供的三个验证服务接口(web服务URL)。

问题解决:

通过在业务系统加入相应的代码或配置文件使用户在输入该业务系统的网址时跳转至CAS服务器的login验证接口,并且该接口会使认证成功后跳转回业务服务器,同时返回一个ticket。

业务系统就是通过返回的ticket来验证该用户是否登录成功。调用CAS服务器的用户凭证校验URL。验证成功后会返回一个XML文件,业务系统客户端通过分析该XML文件来确认登录成功并可以获取登录用户的登录名。登录名在XML文件中。

业务系统确认用户登录成功之后,根据XML文件中的USERID可以知道登录的用户是谁并查询数据库分配其相应的权限等信息

业务系统统一调用CAS服务器的用户登出URL进行登出。

下面讲述了几种语言的环境搭建以及CAS认证的代码实现。

第二章CAS服务器的搭建

2.1 下载所需软件

Tomcat:apache-tomcat-5.5.27 windows安装包。Tomcat可以去apache 网站上去下载。CAS 有关软件可以去https://www.doczj.com/doc/9d14081807.html,/products/cas/downloads/index.html下载。

CAS server端:cas-server-3.3.1-release.zip

2.2 配置运行环境

Tomcat 的安装就更简单,使用直接解压版(不用安装成windows的服务), jdk的安装当然是必备的,这里就不累述了。

配置jdk和Tomcat的环境变量:在“我的电脑”的“属性”中,选择“高级”,再选择“环境变量”。选择新建,在变量名和变量值中分别填入

CATALINA_HOME和E:\tools\apache-tomcat-5.5.27(Tomcat路径)

CLASSPATH和.%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

JAVA_HOME和C:\Program Files\Java\jdk1.6.0(JDK路径)

2.3配置CAS 服务器

为CAS服务器端生成HTTPS证书并注册,运行如下脚本:

keytool -delete -alias tomcatsso -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

keytool -delete -alias tomcatsso -storepass changeit

(注释:清除系统中可能存在的名字为tomcatsso 的同名证书)

keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

(注释:列出系统证书仓库中存在证书名称列表)

keytool -genkey -keyalg RSA -alias tomcatsso -dname "CN=NJJ" -storepass changeit

(注释:指定使用RSA算法,生成别名为tomcatsso的证书,存贮口令为changeit,证书的DN为"cn= NJJ " ,这个DN必须同当前主机完整名称一致哦,切记!!!)

keytool -export -alias tomcatsso -file "%JAVA_HOME%/jre/lib/security/tomcatsso.crt" -storepass changeit

(注释:从keystore中导出别名为tomcatsso的证书,生成文件tomcatsso.crt)

keytool -import -alias tomcatsso -file "%JAVA_HOME%/jre/lib/security/tomcatsso.crt" -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

(注释:将tomcatsso.crt导入jre的可信任证书仓库。注意,安装JDK是有两个jre目录,一个在jdk底下,一个是独立的jre,这里的目录必须同Tomcat使用的jre目录一致,否则后面Tomcat的HTTPS通讯就找不到证书了)

配置Tomcat的HTTPS服务

拷贝C:\Documents and Settings\Administrator\.keystore到tomcat的conf 目录下。

修改server.xml,去掉ssl的注释,并更改为如下配置

keystorePass="changeit" keystoreFile="conf/.keystore"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false" disableUploadTimeout="true"

acceptCount="100" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS" />

注意:

请保持C:\Documents and Settings\Administrator\.keystore与%tomcat_home%\conf\.keystore 一致

将cas-server-3.3.1\modules目录下的cas-server-3.3.1.war 拷入webapp 目录中,改名为cas,然后启动tomcat, 保证http://localhost:8080/cas可以访问。用admin/admin 登录示例程序,显示登录成功则表明cas服务器配置成功。

第三章CAS-JAVA

3.1 JAVA运行环境安装

在安装CAS服务器的时候已经将JAVA运行环境安装完成,在这里不多讲了。

3.2 CAS简单登陆的实现

CAS的JAVA客户端可以从https://www.doczj.com/doc/9d14081807.html,/products/cas/downloads/index.html下载,这里用到的版本是cas-client-2.0.11.zip。将cas-client-2.0.11\java\lib目录下的casclient.jar 拷贝到业务服务工程的WEB-INF\lib下即可。

切记loginUrl、validateUrl等URL里面不能用IP,可以使用自己计算机名,别人访问一样可以通过IP来访问。serverName可以使用IP。

然后修改工程项目的web.xml文件,在文件中添加

CAS Filter

edu.yale.its.tp.cas.client.filter.CASFilter

edu.yale.its.tp.cas.client.filter.loginUrl

https://NJJ:8443/cas/login

edu.yale.its.tp.cas.client.filter.validateUrl

https://NJJ:8443/cas/serviceValidate

edu.yale.its.tp.cas.client.filter.serverName

192.168.0.204:8080

CAS Filter

/*

即可完成重定向至CAS服务器进行认证。

3.3 CAS登出

在业务系统的logout模块中将logout链接的URL改成CAS服务器的logout接口即可。代码如下:

Response.Redirect(“https://localhost:8443/cas/logout”);

有兴趣的人,可以去看JAVA客户端的源代码,我在这里不多讲了。

获取用户的方法:

session.getAttribute(CASFilter.CAS_FILTER_USER);

session.getAttribute("https://www.doczj.com/doc/9d14081807.html,er");

3.4 JSP实现CAS认证

The CAS Tag Library is a another way to authenticate users' access to JSP pages. JSP Tags cannot be used in servlets, so if you need CAS protection within a servlet environment, you can use either the CAS Filter or the CAS Java objects (see below); the former is recommended.

To use the tag library, once casclient.jar is installed in your web application's /WEB-INF/lib directory, you need to add the following to the top of a JSP page you wish to protect:

<%@ taglib uri="https://www.doczj.com/doc/9d14081807.html,/its/tp/cas/version2" prefix="cas"%>

https://https://www.doczj.com/doc/9d14081807.html,/cas/login

https://https://www.doczj.com/doc/9d14081807.html,/cas/proxyValidate

https://authorized-proxy1

https://authorized-proxy2

...

http://service-url//跳转回的地址

...

Welcome, <%= session.getAttribute("netID") %>!

The user will not see any part of the page past the tags until he/she has logged in. If the user hasn't logged in yet, a redirect to the CAS login page will be performed.

Also provided with the CAS Tag Library is a logout tag:

<%@ taglib uri="https://www.doczj.com/doc/9d14081807.html,/its/tp/cas/version2" prefix="cas" %>

<%-- first destroy the web application's session --%>

<% session.invalidate(); %>

<%-- then logout of CAS --%>

logoutUrl="https://https://www.doczj.com/doc/9d14081807.html,/cas/logout" />

cas标签里的URL要根据具体的CAS服务器地址进行修改。cas的URL不能写成IP。

在web.xml中加入:

edu.yale.its.tp.cas.serverName

localhost:8080

其中localhost:8080是你的Web服务器的名称

第四章CAS-PHP

4.1 CAS单点登录测试环境搭建步骤

4.1.1下载必要的软件:

CAS php客户端:CAS-1.0.1.tgz

以下CAS有关软件可以去https://www.doczj.com/doc/9d14081807.html,/products/cas/downloads/index.html下载。

4.1.2搭建php运行环境

我是使用AppServ V.2.5.10 来安装的PHP运行环境,这个集成环境包安装非常方便,很容易就上手。

4.1.3配置PHP cas 客户端测试程序

解压CAS-1.0.1.tgz,将CAS 目录和CAS.php 拷入C:\AppServ\www(AppServ默认安装目录中的www目录)中。这样,cas 的php客户端就配置好了。我们来测试一下这个php 的cas 客户端是否起作用。

修改php客户端自带的一个示例:example_simple.php,并拷贝到www目录中。

代码修改如下:

// phpCAS simple client

// import phpCAS lib

include_once('CAS.php');

phpCAS::setDebug();

// initialize phpCAS

phpCAS::client(CAS_VERSION_2_0,'localhost',8443,'cas');

// no SSL validation for the CAS server

phpCAS::setNoCasServerValidation();

// force CAS authentication

phpCAS::forceAuthentication();

// at this step, the user has been authenticated by the CAS server

// and the user's login name can be read with phpCAS::getUser().

// logout if desired

if (isset($_REQUEST['logout'])) {

phpCAS::logout();

}

// for this test, simply print that the authentication was successfull

?>

phpCAS simple client

Successfull Authentication!

the user's login is .

phpCAS version is .

Logout

红色为修改添加部分。

测试:

1) 访问http://localhost/ example_simple.php

2) Cas检测到用户没有登录,转向:

https://localhost:8443/cas/login?service=http%3A%2F%2Flocalhost%2Fexample_simple.php 登录界面。

3) 在登录界面输入admin/admin 用户名和密码。

4) 登录成功,转回http://localhost/ example_simple.php,并显示有关信息。

4.2 PHP-CAS客户端

PHP-CAS客户端主要CAS文件夹和CAS.php。下面将讲述它们的作用以及简单的cas认证实现。

PHP实现cas简单认证步骤如下:

根据需要初始化不同的客户端

设置不是SSL的CAS认证

进行CAS认证

认证成功后点击登出完成登出。

4.2.1 cas-client的初始化

正如上面给出的example_simple.php的简单例子,利用代码

“phpCAS::client(CAS_VERSION_2_0,'localhost',8443,'cas');”完成了client的初始化操作。Cas-client的初始化是由CAS.php做数据检查,具体实现是由client.php来完成client类的构造。代码如下:

……

global $PHPCAS_CLIENT, $PHPCAS_INIT_CALL;

phpCAS::traceBegin();

if ( is_object($PHPCAS_CLIENT) ) {

phpCAS::error($PHPCAS_INIT_CALL['method'].'() has already been called

(at '.$PHPCAS_INIT_CALL['file'].':'.$PHPCAS_INIT_CALL['line'].')');

}

if ( gettype($server_version) != 'string' ) {

phpCAS::error('type mismatched for parameter $server_version (should be `string\')');

}

if ( gettype($server_hostname) != 'string' ) {

phpCAS::error('type mismatched for parameter $server_hostname (should be `string\')');

}

if ( gettype($server_port) != 'integer' ) {

phpCAS::error('type mismatched for parameter $server_port (should be `integer\')');

}

if ( gettype($server_uri) != 'string' ) {

phpCAS::error('type mismatched for parameter $server_uri (should be `string\')');

}

// store where the initialzer is called from

$dbg = phpCAS::backtrace();

$PHPCAS_INIT_CALL = array('done' => TRUE,'file' => $dbg[0]['file'],'line' => $dbg[0]['line'],

'method' => __CLASS__.'::'.__FUNCTION__);

……

CAS.php是一个phpCAS类,主要是为了CAS的实现做支持。可以在php代码中直接调用phpCAS类的方法,只要在代码前面加入“include_once('CAS.php');”。这个类中提供了两个initialization:phpCAS client initializer、phpCAS proxy initializer。分别初始化两种客户端:不带代理的客户端和有代理的客户端。该初始化都调用了client.php中的client的构造函数,根据传入的参数的不同来区分是否具体代理。代码如下:

//具有代理的client

$PHPCAS_CLIENT = new CASClient($server_version,TRUE/*proxy*/,

$server_hostname,$server_port,$server_uri,$start_session);

//不具有代理的client

$PHPCAS_CLIENT = new CASClient($server_version,FALSE/*proxy*/,

$server_hostname,$server_port,$server_uri,$start_session);

Client.php中的client构造主要完成以下工作:

存储以前的session,创建新session;

判断是否有代理功能并判断当前server_version是否支持(CAS_VERSION_1_0不支持);

判断$server_hostname、$server_port、$server_uri是否合法;

如果上述都合法则修正$server_uri(“/”与“\”的区别);

判断是否有代理功能,有则设置是否是CallbackMode;

如果是CallbackMode则判断phpCAS是否是https;

获取并保存ticket并根据不同的版本把它从CGI中移除,为了安全。

代码见附录1。

4.2.2设置不是SSL的CAS认证

调用phpCAS类中的setNoCasServerValidation()进行设置。设置该CAS服务认证不是SSL 方式的认证。如果不加入这句语句的话认证可能无法正常运行。如下图4所示:

图4:没有加入phpCAS::setNoCasServerValidation()语句

输入帐户密码后画面会停留在图4这个页面,无论你点击“是”还是“否”都无法进入你想进入的系统。

当加入phpCAS::setNoCasServerValidation()语句后,点击图4页面上的“是”则可以进入系统,如图5所示:

图5:加入了phpCAS::setNoCasServerValidation()语句

4.2.3 进行CAS认证

在PHP代码中加入phpCAS::forceAuthentication();即可进行CAS认证。

forceAuthentication()方法是phpCAS类中的一个方法。它完成了CAS认证的检查,首先检测是否初始化$PHPCAS_CLIENT,成功之后再检查之前是否认证过,以及记录此次认证。代码如下:

function forceAuthentication()

{

global $PHPCAS_CLIENT, $PHPCAS_AUTH_CHECK_CALL;

phpCAS::traceBegin();

if ( !is_object($PHPCAS_CLIENT) ) {

phpCAS::error('this method should not be called before '.__CLASS__.'::client() or '.__CLASS__.'::proxy()');

}

$auth = $PHPCAS_CLIENT->forceAuthentication();

// store where the authentication has been checked and the result

$dbg = phpCAS::backtrace();

$PHPCAS_AUTH_CHECK_CALL = array('done' => TRUE,'file' => $dbg[0]['file'],

'line' => $dbg[0]['line'],'method' => __CLASS__.'::'.__FUNCTION__,

'result' => $auth );

if ( !$auth ) {

phpCAS::trace('user is not authenticated, redirecting to the CAS server');

$PHPCAS_CLIENT->forceAuthentication();

} else {

phpCAS::trace('no need to authenticate (user `'.phpCAS::getUser().'\' is already

authenticated)');

}

phpCAS::traceEnd();

return $auth;

}

认证的实现是在client.php中的forceAuthentication()方法完成,它来完成是否认证的检查以及进行认证。forceAuthentication()通过调用isAuthenticated()来检查之前是否登录过,如果没有登录过则重定向至CAS。isAuthenticated()则又调用wasPreviouslyAuthenticated(),wasPreviouslyAuthenticated()在非代理模式下调用isSessionAuthenticated()来进行最终的session的检查从而完成是否认证的检查。

现在我们来看看这几个方法的具体工作是哪些。

4.2.3.1 isSessionAuthenticated()

function isSessionAuthenticated (){

return !empty($_SESSION['phpCAS']['user']);

}

从代码可以看出,isSessionAuthenticated ()只是对$_SESSION['phpCAS']['user']进行检查是否为空。如果为空的话则返回FALSE即没有认证过。反之返回TRUE即之前认证过了。

4.2.3.2 wasPreviouslyAuthenticated()

wasPreviouslyAuthenticated()还区分了代理和非代理。

对于有代理的,则进行$_SESSION['phpCAS']['user']和$_SESSION['phpCAS']['pgt']进行是否为空检查并进行User、PGT、ST和PT的赋值。不存在的都赋值为空。并用phpCAS::trace()进行记录信息。

对于没有代理的,则进行简单的phpCAS检查,调用isSessionAuthenticated ()来完成操作。同样调用phpCAS::trace()记录信息。并返回检查结果。

在代理模式只有当$_SESSION['phpCAS']['user']和$_SESSION['phpCAS']['pgt']都存在的时候才返回TRUE,其他情况都返回FALSE。在非代理模式返回结构由isSessionAuthenticated ()产生。代码见附录2.

备注:该方法还会检查是否是CallbackMode,并进行适当的赋值。

4.2.3.3 isAuthenticated()

isAuthenticated()主要是在完成wasPreviouslyAuthenticated()检查返回TRUE的情况下对ST、PT和PGT的检测(代理模式下才对PGT进行检测)。当存在ST时则对ST进行检测,调用validateST()(在这里不对validateST()进行详细讲述)完成检测,在检测成功的情况下记录信息返回TRUE,失败则返回FALSE。同样进行PT和PGT检测。如果ST和PT都不存在则检测失败,返回FALSE。

代码见附录3.

4.2.3.4 forceAuthentication()

function forceAuthentication()

{

phpCAS::traceBegin();

if ( $this->isAuthenticated() ) {

// the user is authenticated, nothing to be done.

phpCAS::trace('no need to authenticate');

$res = TRUE;

} else {

// the user is not authenticated, redirect to the CAS server

if (isset($_SESSION['phpCAS']['auth_checked'])) {

unset($_SESSION['phpCAS']['auth_checked']);

}

$this->redirectToCas(FALSE/* no gateway */);

// never reached

$res = FALSE;

}

phpCAS::traceEnd($res);

return $res;

}

forceAuthentication()并不复杂,它首先调用isAuthenticated()来检测是否登录过,在失败的情况下才进行重定向至CAS服务器,在此我就不多加解释了,代码一目了然。

综上所述:CAS的认证步骤如下:

非代理模式(成功)

方法调用过程:

phpCAS::forceAuthentication()---->”PHPCAS_CLIENT->forceAuthentication()”---->

“PHPCAS_CLIENT-> isAuthenticated()”---->” PHPCAS_CLIENT->wasPreviouslyAuthenticated()”

---->” PHPCAS_CLIENT->isSessionAuthenticated”

实际检测过程:

$_SESSION['phpCAS']['user']----> ST/PT---->TRUE

代理模式(成功)

方法调用过程:

phpCAS::forceAuthentication()---->”PHPCAS_CLIENT->forceAuthentication()”---->

“PHPCAS_CLIENT-> isAuthenticated()”---->” PHPCAS_CLIENT->wasPreviouslyAuthenticated()”

实际检测过程:

$_SESSION['phpCAS']['user']&& $_SESSION['phpCAS']['pgt']---->ST/PT和PGT---->TRUE

备注:

检测过程只要一个不通过就返回FALSE。

检测结果是TRUE的无需登录直接进入业务系统。

检测失败尚未登录

FALSE---->” PHPCAS_CLIENT->redirectToCas()”---->CAS服务器进行认证

4.2.4 登出

PHP代码中加入

if (isset($_REQUEST['logout'])) {

phpCAS::logout();

}

即完成了登出功能。isset($_REQUEST['logout'])是检测是否有logout请求,如果有则调用phpCAS::logout()进行登出。

4.2.4.1 phpCAS::logout()

phpCAS::logout首先检测$PHPCAS_CLIENT是否被初始化,然后检测参数$params是否是array 类型,如果是string类型则提示要求调用phpCAS::logoutWithUrl($url)。在检测$params为array 类型后将$params中的$key = "service" 和$key = "url"的元素复制到$parsedParams中。并调用$PHPCAS_CLIENT->logout($parsedParams)进行logout处理。phpCAS::logout()的代码见附录4. phpCAS中有很多中logout的方法,每种方法都能实现不同的登出方式,这些方法有:logoutWithRedirectService($service)、logoutWithRedirectServiceAndUrl($service, $url)、logoutWithUrl($url)还有上面说的最简单的logout()。他们的实现都很简单,都是先进行参数检测再调用$PHPCAS_CLIENT->logout(参数),根据输入不同的参数来完成不同的logout。这里不做详细讲述请参考phpCAS::logout()的代码。

4.2.4.2 $PHPCAS_CLIENT->l ogout($parsedParams)

$PHPCAS_CLIENT->logout($parsedParams)完成logout功能,代码如下:

function logout($params) {

phpCAS::traceBegin();

$cas_url = $this->getServerLogoutURL();

$paramSeparator = '?';

if (isset($params['url'])) {

$cas_url = $cas_url . $paramSeparator . "url=" . urlencode($params['url']);

$paramSeparator = '&';

}

if (isset($params['service'])) {

$cas_url = $cas_url . $paramSeparator . "service=" . urlencode($params['service']);

}

header('Location: '.$cas_url);

session_unset();

session_destroy();

$this->printHTMLHeader($this->getString(CAS_STR_LOGOUT));

printf('

'.$this->getString(CAS_STR_SHOULD_HAVE_BEEN_REDIRECTED).'

'

,$cas_url);

$this->printHTMLFooter();

phpCAS::traceExit();

exit();

}

从代码可见,logout()根据传入参数的不同创建不同的cas_url从而logout到不同的页面。

综上所述,要完成logout只用根据需求选择phpCAS中的不同logout方法即可完成。不同的logout方法归根结底都是通过调用CASClient类中的logout(参数),传入不同的参数来完成不同的登出。

第五章https://www.doczj.com/doc/9d14081807.html,

5.1 搭建https://www.doczj.com/doc/9d14081807.html,环境

针对不同的操作系统下载不同的IIS服务程序。这里就不多讲了,假定安装成功。我用的是server2003我还对IIS管理器进行了设置,因为刚装上去服务不可用。。。

在“网站”的默认网站中右键选择“属性”,在“目录安全性”中选择“集成Windows身份验证”

在“主目录”的执行权限选择“纯脚本”。

在“https://www.doczj.com/doc/9d14081807.html,”中选择https://www.doczj.com/doc/9d14081807.html,版本选择2.0

创建一个虚拟目录(按提示一步步走),再把需要执行的代码放到配置的目录下

对这个虚拟目录右键选择“属性”,在“虚拟目录”中的应用程序设置选择“创建”应用程序名,并将执行权限选为“纯脚本”。

这样就配置完毕。

备注:配置好端口也很重要,尤其是在多种服务器都在运行时,防止端口冲突。选择“网站”的默认网站右键“属性”在TCP端口出填写。

5.2 CAS简单登陆实现

从https://www.doczj.com/doc/9d14081807.html,/downloads/cas-clients/dotnet/下载cas .net客户端,是一个dll 文件,可以在https://www.doczj.com/doc/9d14081807.html,项目中引用,然后通过下边的代码就可以使用:在web.config文件中增加关于cas服务器和本地服务的地址信息:

(备注:根据具体的服务地址进行设置。)

然后在Default.aspx页面功能代码中,使用下边的代码调用就可以了:

CAS_SSO单点登录实例详细步骤

CAS SSO单点登录实例详细步骤 原创作者:孙俊财

第一步 1、用keytool生成证书: 命令: keytool -genkey -alias sjc -keyalg RSA -keysto re c:/store/mykey 说明: 这里-alias sjc 是表示生成的这个证书的别名叫sjc,-keyalg RSA 指的是采用的RSA算法,-keystore c:/store/mykey是指生成的证书存储的位置。回车后会提示你输入keystore password,这可以自己定(这里输入sunjuncai,下面配tomcat时要用的),然后是一些个人信息及组织信息,可以轻松搞定。 注意:密码输入后,会让你输入其他信息,记得这里第一个姓名必须是服务器的域名这里我输入的是完整计算机名称:gaofeng.nmc.hamcc 这里要注意如果不这样写就会报如下异常: java.io.IOException: HTTPS hostname wrong: should be 实战: C:\Documents and Settings\wangyoushi8>keytool -genkey -alias sjc -keyalg RSA -keystore c:/store/mykey 输入keystore密码:sunjuncai

您的名字与姓氏是什么? [Unknown]:gaofeng.nmc.hamcc 您的组织单位名称是什么? [Unknown]:上海神洲数港 您的组织名称是什么? [Unknown]:网络优化 您所在的城市或区域名称是什么? [Unknown]:郑州 您所在的州或省份名称是什么? [Unknown]:河南 该单位的两字母国家代码是什么 [Unknown]:ZH CN= gaofeng.nmc.hamcc, OU=上海神洲数港, O=网络优化, L=郑州, ST=河南, C=ZH 正确吗? [否]:y 输入的主密码 (如果和keystore 密码相同,按回车): 2、创建证书后,就导出证书: 命令: keytool -export -file c:/store/server.crt -alias sjc -keystore c:/store/mykey 说明: 从c:/store/mykey里取出证书入到c:/store/下,如果没有指定,就是存放在目录下C:\Documents and Settings\用户目录名\ 实战: C:\Documents and Settings\wangyoushi8>keytool -export -file c:/store/server.crt -alias sjc -keystore C:/store/mykey 输入keystore密码:sunjuncai 保存在文件中的认证 3、为客户端的JVM导入密钥: 命令: keytool -import -keystore D:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -alias sjc 说明: 注意:输入密码时密码为"changeit",这是默认密码. 特别说明:这个D:/jdk1.5.0_12/jre/lib/security/cacerts是指JDK的JRE路径下的lib目录. 至此,第一步完成。 实战: C:\Documents and Settings\wangyoushi8> keytool -import -keystore D:/jdk1.5.0_12/jre/lib/security/cacerts -file c:/store/server.crt -alias sjc 输入keystore密码:changeit

CAS单点登录配置全过程

CAS配置全过程 软件工具: 1.cas-server-3.3.5-release.zip(CAS服务端) 2.cas-client- 3.1.10-release.zip(CAS客户端) 3.apache-tomcat-7.0.40 https://www.doczj.com/doc/9d14081807.html,mons-dbcp-all-1.3-r699049.jar 5.mysql-connector-java-5.1.18-bin.jar 6.cas-server-jdbc-3.0.5-rc2.jar 写在前面的话 此配置是根据当前系统,当前的版本,仅供参考,如果有什么其他的问题可以一起研究。 第一节:先走通技术障碍 第一步:环境部署 1.在Tomcat 根目录下创建一个cas目录。 2.下载CAS服务器并解压,打开cas-server- 3.3.5\modules,将cas-server-webapp-3.3.5.war复制到刚刚在Tomcat创建的cas目录下,并重命名为ROOT.war 3.修改host文件(C:\Windows\System32\drivers\etc)添加 127.0.0.1 https://www.doczj.com/doc/9d14081807.html, 注意:如果想在一台PC机上模拟这个单点登录,就必须域名重定向,如果是多台PC机,

可以不配置此项,下文有用到https://www.doczj.com/doc/9d14081807.html,,可以用相应PC机的IP代替 4.修改Tomcat文件下的server.xml(apache-tomcat-7.0.40\conf\server.xml) 添加内容: 5.启动Tomcat服务,查看信息,(如果有报错,可以根据信息查找错误),打开浏览器,输入https://www.doczj.com/doc/9d14081807.html,:8080如果出现以下界面,则CAS服务端配置成功。 注:这个是最简单的CAS服务,只要输入的用户名跟密码一样,就可以正常登陆,在我们实际开发中,这个验证因为跟数据库作比较,接下来,我们就配置数据库校验。 第二步:配置数据库验证 1.打开deployerConfigContext.xml,在apache-tomcat-7.0.40\cas\ROOT\WEB-INF目录下,找到如下代码: 添加下面代码: 2.增加数据源dataSource, 在deployerConfigContext.xml,(跟上面同一个文件)找到 ,在下面添

CAS认证实现单点登录

CAS认证实现单点登录 一.背景 有几个相对独立的java的web应用系统,各自有自己的登陆验证功能,用户在使用不同的系统的时候,需要登陆不同的系统。现在需要提供一个 统一的登陆/登出界面,而不修改各个系统原来的登陆验证机制。于是采用单点登录系统开源单点登录产品CAS。 随着新的业务网站不断的增加,用户在每个应用系统中都有独立的账号,这样就造成在访问不同的应用系统时,需要记录对应的用户名和密码,多 个用户名密码极易记混,如果忘记或记错了某一个业务网站的用户名或密码就无法进行登录,耽误工作,影响工作效率 允许用户一次性进行认证之后,就访问系统中不同的应用 二.原理 CAS 是一个独立的web 应用, 当前使用Java Servlets 实现,通过HTTPS 协议保证其数据的传输安全性。它通过三个Url 地址进行访问:登录Url、验证URL、注销URL。

三. CAS认证集成 要使用单点登录,需要部署CAS系统,CAS服务端可以直接部署在tomcat下运行,对于CAS服务端来说,所有要集成单点登录的web应用都是它的一个客户端,CAS有客户端jar包,客户端web应用需要引入CAS客户端的jar包,这样CAS系统的服务端和客户端web应用程序端才能通信。 客户端web应用程序的通过配置web.xml,添加CAS需要的各种过滤器,来实现和CAS服务器通信,用户信息验证工作在CAS 服务端统一完成,验证通过后,客户端web应用程序只需要补全自己的Session信息即可。 3.1部署CAS系统服务端 步骤1:准备好以下运行环境 jdk1.6+

tomcat6+ jdk与tomcat的下载、安装、配置在此略过。 步骤2:安装部署cas-server 到官网(https://www.doczj.com/doc/9d14081807.html,/cas/cas-server-3.5.0-release.zip)下载cas-server-3.5.0-release.zip。解压缩以后,在其路 径 cas-server-3.5.0\modules 下面找到 cas-server-webapp-3.5.0.war,将其拷贝到 tomcat 的webapps 下,改名为 cas.war, 并修改 war 包中配置文件 cas.properties 里的 cas server name=cas 并启动 tomcat,启动后可在浏览器访 问 http://localhost:8080/cas/login

CAS单点登录

CAS单点登录总结 一、服务端搭建 1.安装JDK。 2.安装Tomcat。安装版本Tomcat7.0. 3.在Tomcat上配置SSl (1)生成证书。在C盘根目录下建立子文件夹“Keys”,用于存放证书。在 JDK安装文件夹下的bin文件夹(C:\Program Files\Java\jre1.8.0_60\bin)下打开“命令窗口”。 (2)执行命令“keytool -genkey -alias tomcat -keyalg RSA -storepass changeit -keystore c:\keys\.keystore -validity 3600”创建证书。 (3)将证书导入的JDK的证书信任库中 第一步:导出证书。 执行命令“keytool -export -trustcacerts -alias tomcat -file c:\keys\tomcat.cer -keystore c:\keys\.keystore -storepass changeit”将证书导出到Keys文件夹。 第二步:将证书导入到JDK证书信任库。 执行命令“keytool -import -trustcacerts -alias tomcat -file c:\keys\tomcat.cer -keystore "C:\Program Files\Java\jre7\lib\security\cacerts" -storepass changeit”。系统询问 是否信任此证书,回答“y” 4、配置server.xml文件 用文本编辑器管理员身份运行,打开Tomcat7.0下的server.xml文件(C:\Program

CAS实现单点登录(SSO)经典完整教程

一、简介 1、cas是有耶鲁大学研发的单点登录服务器 2、本教材所用环境 ?Tomcat7.2 ?JDK6 ?CAS Service 版本 cas-server-3.4.8-release ?CAS Client版本 cas-client-3.2.1-release 二、生成证书 证书对于实现此单点登录非常之重要,证书是服务器端和客户端安全通信的凭证,本教程只是演示,所有用了 JDK自带的证书生成工具keytool。当然在实际项目中你可以到专门的证书认证中心购买证书。 中文官方网站:https://www.doczj.com/doc/9d14081807.html,/cn/ 1、用JDK自带的keytool生成证书 view plain 1.命令:keytool -genkey -alias smalllove -keyalg RSA -keystore D:/keys/smallkey 此命令是生成一个证书,其中smalllove 是证书别名 此命令的执行如图所示:

其中名字与姓氏这一最好写你的域名,如果在单击测试你可以在C:\Windows\System32\drivers\etc\hosts文件中映射一个虚拟域名,注意不要写IP。 2、导出证书 view plain

1.命令:C:\>keytool -export -file d:/keys/small.crt -alias smalllove -keystore d:/keys/smallkey 如图: 密码为上步设置的密码。 3、把证书导入到客户端JDK中。 view plain 1.命令:keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove 此命令是把证书导入到JDK中。 如图:

CAS单点登录配置全过程

CAS配置全过程 说明:这里只是简单的配置了CAS单点登录的过程,并没有加入复杂的验证,也没有做MD5的校验。输入数据库中存在的用户名跟密码就会登录成功 一. 首先需要下载cas-server-3.4.2-release.zip包,这个包里面包含CAS Server服务器的war包。解压之后放到找到cas-server-3.4.2\modules 下的 cas-server-webapp-3.4.2.war , 拷tomcat\webapps\下并改名为cas.war。 启动tomcat后会在webapps下看到cas文件,然后停止tomcat. 二. 配置tomcat以及修改cas server的配置 1.生成证书并导入到jdk的jre中 请直接运行附件中的.bat文件会自动把证书生成在D盘根目录下并导入到jre 中 这是bat脚本内容 keytool -genkey -alias tomcatgecko -keyalg RSA -keystore d:\mykeystore -dname "CN=gecko-4d4611f2e, OU=gecko-4d4611f2e, O=gecko-4d4611f2e, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit keytool -export -alias tomcatgecko -keystore d:\mykeystore -file d:\mycerts.crt -storepass changeit keytool -import -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -file d:\mycerts.crt -alias tomcatgecko 这里要注意:证书是要导入到tomcat使用的jdk。不然CAS在跳转时会找不到本地域名脚本中红色的部分是写自己的计算机名称

CAS单点登录系统实操指南

CAS单点登录系统实操指南 CAS单点登录系统实操指南 (1) 1. CAS单点登录介绍 (3) 1.1. 什么是单点登录 (3) 1.2. 什么是CAS (3) 2. CAS服务端部署及配置 (5) 2.1. 基础部署配置 (5) 2.2. 去除https认证 (7) 2.3. 登录数据源设置 (8) 2.3.1 密码未加密处理 (8) 2.3.2 密码MD5加密配置 (9) 2.4. 登录页面的极简改造 (10) 3. CAS客户端搭建 (11) 3.1. 搭建工程并添加依赖 (11) 3.2. 单点登录配置 (12) 3.3. 单点登出配置 (14) 3.3.1 未重定向登出 (14) 3.3.2 重定向地址登出 (15) 3.4. 获取登录用户信息配置 (15) 4. CAS客户端与SpringSecurity集成 (16) 4.1. 搭建工程并添加依赖 (16)

4.2. 修改和创建配置文件 (18) 4.3. 创建Spring-security认证脚本 (22) 4.4. 获取登录名 (22)

1. CAS单点登录介绍 1.1. 什么是单点登录 单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决。 1.2. 什么是CAS CAS 是Yale 大学发起的一个开源项目,旨在为Web 应用系统提供一种可靠的单点登录方法,CAS 在2004 年12 月正式成为JA-SIG 的一个项目。CAS 具有以下特点:

单点登录_尚学堂CAS讲义

一.SSO (Single Sign-on)原理 SSO 分为Web-SSO和桌面SSO。桌面SSO 体现在操作系统级别上。Web-SSO体现在客户端,主要特点是:SSO 应用之间使用Web 协议( 如HTTPS) ,并且只有一个登录入口。我们所讲的SSO,指Web SSO 。 SSO 的体系中,有下面三种角色: ?User(多个) ?Web应用(多个) ?SSO认证中心(一个) SSO 实现模式千奇百怪,但万变不离其宗,包含以下三个原则: ●所有的登录都在 SSO 认证中心进行。 ●SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是通过认证的 用户。 ●SSO 认证中心和所有的 Web 应用建立一种信任关系。 二.CAS 的基本原理 CAS(Central Authentication Service) 是Yale 大学发起的构建Web SSO 的Java开源项目。 1.CAS 的结构体系 ◆CAS Server CAS Server 负责完成对用户信息的认证,需要单独部署,CAS Server 会处理用户名/ 密码等凭证(Credentials) 。 ◆CAS Client CAS Client部署在客户端,当有对本地Web 应用受保护资源的访问请求,并且需要对请求方进行身份认证,重定向到CAS Server 进行认证。 2.CAS 协议 基础协议

上图是一个基础的CAS 协议,CAS Client 以过滤器的方式保护Web 应用的受保护资源,过滤从客户端过来的每一个Web 请求,同时,CAS Client 会分析HTTP 请求中是否包请求Service Ticket( 上图中的Ticket) ,如果没有,则说明该用户是没有经过认证的,CAS Client 会重定向用户请求到CAS Server (Step 2 )。Step 3 是用户认证过程,如果用户提供了正确的认证信息,CAS Server 会产生一个随机的Service Ticket ,会向User 发送一个Ticket granting cookie (TGC) 给User 的浏览器,并且重定向用户到CAS Client (附带刚才产生的Service Ticket),Step 5 和Step6 是CAS Client 和CAS Server 之间完成了一个对用户的身份核实,用Ticket 查到Username ,认证通过。 3.CAS 如何实现SSO 当用户访问Helloservice2再次被重定向到CAS Server 的时候,CAS Server 会主动获到这个TGC cookie ,然后做下面的事情: 1)如果User 的持有TGC 且其还没失效,那么就走基础协议图的Step4 ,达到了 SSO 的效果。 2)如果TGC 失效,那么用户还是要重新认证( 走基础协议图的Step3) 。 三.实践配置 下面我们以tomcat 5.5 为例进行说明(这里,我将Server和Client同时放在了同一个Tomcat服务器下)。 软件环境:tomcat 5.5 ant-1.6.5, jdk1.5.0_06 下载cas-server-3.0.4.zip和cas-client和cas-server-jdbc-3.0.5-rc2.jar和mysql 5.0.16和tomcat 5.5.15 https://www.doczj.com/doc/9d14081807.html,/downloads/cas/cas-server-3.0.4.zip

CAS3.5.2单点登录详解

服务端cas: 从网上下载cas:https://www.doczj.com/doc/9d14081807.html,/ 在cas下: 在cas-client下: 解压cas-server-3.5.2-release.zip\cas-server-3.5.2\module\cas-server-webapp-3.5.2.war部署到tomcat上, 设置 F:\apache-tomcat-6.0.30\webapps\cas\WEB-INF\cas-servlet.xml(大家取实际情况的路径) 默认为false,这个设置是为了让登出(logout)以后进入到指定页面. 设置deployerConfigContext.xml 配置数据源和加密: oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@127.0.0.1:1521:orcl require require 然后注释掉下面这行,这行是为了测试使用,只要账号密码相同就可以通过验证

CAS 单点登录操作文档

这人CAS 在 Tomcat 中实现单点登录 1证书生成及导入 1.1Server端证书配置 1.2 JAVA信任证书库 D:\Program Files\Java\jdk1.5.0\jre\lib\security\cacerts cacerts证书库默认密码-storepass changeit 查看证书 1.1.1.2 keytool -list -keystore cacerts -storepass changeit 如果存在则删除 1.1.1.1 keytool -delete -alias tomcatsso -keystore cacerts -storepass changeit 创建证书库 1.1.1.3 keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=https://www.doczj.com/doc/9d14081807.html," -keystore server.keystore -storepass 12345678 导出证书 1.1.1.4 keytool -export -alias tomcatsso -file tomcatsso.crt -keystore server.keystore -storepass 12345678 加入JAVA信任证书库 1.1.1.5 keytool -import -alias tomcatsso -file tomcatsso.crt -keystore ../jre/lib/security/cacerts -storepass changeit 说明:在生成key的过程,"cn=https://www.doczj.com/doc/9d14081807.html," 中的https://www.doczj.com/doc/9d14081807.html,为Server端的域名(必填)。 1.2.1TOMCAT 配置SSL支持

基于CAS模式的单点登录系统设计与分析

Computer Science and Application 计算机科学与应用, 2019, 9(7), 1434-1440 Published Online July 2019 in Hans. https://www.doczj.com/doc/9d14081807.html,/journal/csa https://https://www.doczj.com/doc/9d14081807.html,/10.12677/csa.2019.97161 Design and Analysis of Single Sign on System Based on CAS Mode Xiaowei Xu, Jinlei Wang, Wenfei Jiang, Fengjuan Cui North China Sea Data and Information Service, SOA, Qingdao Shandong Received: Jul. 9th, 2019; accepted: Jul. 22nd, 2019; published: Jul. 29th, 2019 Abstract In order to solve the problem of the integration of the existing business application system of NCS, this paper makes a deep research on the principle of CAS integrated authentication, and designs a single sign on system based on CAS mode. Based on the actual situation of various software systems of NCS, this paper analyzes the problems faced by various systems to achieve single sign-on, propos-es different solutions to these problems, and provides technical route for the integration of business application systems of NCS, so as to realize the construction of single sign-on system of NCS. Keywords CAS Authentication, SSO, System Integration 基于CAS模式的单点登录系统设计与分析 徐晓玮,王金磊,姜雯斐,崔凤娟 国家海洋局北海信息中心,山东青岛 收稿日期:2019年7月9日;录用日期:2019年7月22日;发布日期:2019年7月29日 摘要 针对自然资源部北海局现有业务应用系统整合问题,对CAS集成认证原理进行深入研究,设计搭建了基于CAS模式的单点登录系统。结合北海局各类软件系统的实际情况,分析各类系统实现单点登录所面临的问题,针对这些问题提出不同的解决方案,为北海局业务应用系统的整合集成提供技术路线,以实现北海局单点登录系统的建设。

无废话CAS单点登录配置全过程

CAS配置全过程 申明: 我使用的是3.4.6版本,在路径上、文件名上可能与您的版本不一样,请务必看清您的CAS版本。 在这里我没有写过多的废话,里面属性的作用、证书的制作等都属于额外的话题,这里就是将CAS部署、运行起来。至于其他的东西,可以慢慢研究。 写在前面的话 看了下面的文字说明如果还是搞不明白这么回事的或遇到什么疑难杂症的,请加入我的QQ群(35271653),群里没几个人,聊起来方便。在CAS上我也有很多没有解决的问题(例如防止重复登录),大家一起共同探讨。 第一节:先走通技术障碍 第一步:环境部署 下载CAS服务器并解压,在此处我的目录是D:\Program Files\Apache Software Foundation\cas-server-3.4.6,您可以根据实际情况解压。 打开cas-server-3.4.6 \modules,将其中的cas-server-webapp-3.4.6.war拷贝至您的Apache Tomcat的WebApps目录下。改名为cas.war(为了方便)并启动Tomcat,启动完成后关闭Tomcat。在WebApps下会看到cas工程文件夹。 将cas-server-3.4.6\modules下的cas-server-support-jdbc-3.4.6.jar复制到CAS 工程的\WEB-INF\lib下,同时还需要commons-dbcp.jar,此包在CAS里我没找到,我是在网上下载的。 然后将Oracle数据库驱动加入到cas工程的lib下。 第二步:配置数据库验证 打开cas/web-inf/deployerConfigContext.xml,找到如下代码: 这段代码本来是用于测试的,所以没有任何实际用途,在实际应用中应当采用XML文件或数据库验证,下面就是数据库验证的配置文件。将原来的代码其替换成如下代码:

CAS单点登录集成文档

一、介绍 CAS单点登录为业务系统提供统一的单点登录服务。业务系统不需要开发自己的登录界面,系统使用者也避免了在多个业务系统间重复输入密码,改善了用户体验,同时密码实现集中维护,提高了系统的安全性。 单点登录演示地址:http://172.16.10.40:1433/cas/login(社管平台测试环境)业务系统可以使用这个地址进行开发测试。 二、下载 CAS为J2EE B/S应用提供了应用集成API,可以直接调用实现单点登录的集成。:cas-client.jar 文件下载后复制到业务系统的WEB-INF/lib目录。 三、配置 在web.xml中配置认证过滤器(实现单点登录用户认证)和会话监听器(实现单点登录的注销),例如: com.iflytek.cas.listener.LogoutSessionListener casFilter com.iflytek.cas.filter.TicketValidationFilter appUrl casLoginUrl http://172.16.10.40:1433/cas/login ticketValidateUrl http://172.16.10.40:1433/cas/validate casFilter /* 过滤器参数说明: 1、appUrl:Client会根据浏览器请求自动判断这个地址,所以一般情况下是不需要设置的。但是在反向代理环境中,CAS Client会得到代理服务器的地址,所以必须手工指定这个地址。

SSO之CAS单点登录详细搭建

SSO之CAS单点登录详细搭建: 环境说明: 同一个机器上环境如下: 操作系统:windows7 64位 JDK版本:1.7.0_80 web容器版本:apache-tomcat-7.0.70 64位 服务端:cas-3.5.2.1.zip 服务端现在地址:https://https://www.doczj.com/doc/9d14081807.html,/apereo/cas/archive/v4.2.3.zip 客户端:cas-client-3.3.3-release.zip 客户端下载地址:https://www.doczj.com/doc/9d14081807.html,/cas-clients/ eclipse版本:eclipse-jee-luna-SR2-win32-x86_64.zip 1、将cas-3.5.2.1 cas-client-3.3.3 标准maven工程导入eclipse 打包编译; 2、修改本机C:\Windows\System32\drivers\etc\hosts (CAS单点登录系统是基于JAVA安全证书的https 访问,要使用CAS单点登录必须要配置域名, cas是不能通过ip访问的.) 附件-->记事本管理员权限编辑hosts文件,加入如下三行代码后保存。 127.0.0.1 https://www.doczj.com/doc/9d14081807.html, 127.0.0.1 https://www.doczj.com/doc/9d14081807.html, 127.0.0.1 https://www.doczj.com/doc/9d14081807.html, 解释: https://www.doczj.com/doc/9d14081807.html, =>> 对应部署cas server的tomcat,这个虚拟域名还用于服务端证书生成 https://www.doczj.com/doc/9d14081807.html, =>> 对应部署client1客户端应用的tomcat https://www.doczj.com/doc/9d14081807.html, =>> 对应部署client2客户端应用的tomcat 3、安全证书配置 3.1、管理员模式打开cmd命令窗口,生成证书,在cmd窗口输入以下命令: C:\Users\Administrator>keytool -genkey -alias ssoflyer -keyalg RSA -keysize 1024 -keypass flyer2016 -validity 365 -keystore D:\app\flyer.keystore -storepass flyer2016 说明:-alias自定义的别名; -keypass指定证书密钥库的密码; -storepass和前面keypass密码相同,否则下面tomcat配置https会访问失败; -keystore指定证书的位置,例如:D:\app\目录,密钥库名称可以自定义,例如:flyer.keystore 特别注意:您的名字与姓氏是什么?该项一定要使用网站的域名,例如: https://www.doczj.com/doc/9d14081807.html, ,Cas Client使用httpclient访问cas server的时候,会严格的检查证书。 示例如下: C:\Users\Administrator>keytool -genkey -alias ssoflyer -keyalg RSA -keysize 1024 -keypass

CAS单点登录

CAS基本原理与配置 1

版本1.0 日期:2015年11月20日2

目录 1基本原理 (4) 1.1概念简介 (4) 1.2CAS基本原理 (5) 2配置说明 (8) 2.1配置JDK证书 (8) 2.2配置CAS服务器 (10) 2.3配置CAS客户端 (11) 2.4定制化说明 (17) 2.4.1 页面定制化 (17) 2.4.2 数据库定制化 (18) 2.4.3 增加图片验证和短信验证 (20) 2.4.4 增加自定义登录验证 (26) 3

1基本原理 1.1概念简介 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 CAS ( Central Authentication Service )是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于 Web SSO )。CAS 开始于 2001 年,并在 2004 年 12 月正式成为 JA-SIG 的一个项目。 CAS主要特性: 1、开源的、多协议的 SSO 解决方案; Protocols : Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等; 2、支持多种认证机制: Active Directory 、 JAAS 、 JDBC 、 LDAP 、 X.509 Certificates 等; 3、安全策略:使用票据( Ticket )来实现支持的认证协议; 4、支持授权:可以决定哪些服务可以请求和验证服务票据( Service Ticket ); 5、提供高可用性:通过把认证过的状态数据存储在 TicketRegistry 组件中,这些组件有很多支持分布式环境的实现,如: BerkleyDB 、 Default 、 EhcacheTicketRegistry 、 JDBCTicketRegistry 、 JBOSS TreeCache 、 JpaTicketRegistry 、 MemcacheTicketRegistry 等; 6、支持多种客户端: Java 、 .Net 、 PHP 、 Perl 、 Apache, uPortal 等; 4

cas单点登录客户端说明文档

Java Web应用CAS Client端的配置详解 配置环境: 1. CAS Server 4.0已部署,跑在tomcat 7上。部署在https://www.doczj.com/doc/9d14081807.html,/cas上(本地hosts 文件配置域名)。 2. CAS Client web应用也跑在tomcat 7上,部署在https://www.doczj.com/doc/9d14081807.html,/app(本地hosts文件配置域名)。 以下是各种web应用集成CAS的处理信息: //=========没有使用特定安全框架如shiro的情况========== 配置步骤: 1).添加cas-client-core-3.1.10-sources.jar,如使用mvn,pom.xml中添加 org.jasig.cas cas-client-core 3.1.10 servlet-api javax.servlet 2). web.xml中添加: org.jasig.cas.client.session.SingleSignOutHttpSessionListener CAS Single Sign Out Filter org.jasig.cas.client.session.SingleSignOutFilter

CAS单点登陆配置

CAS服务端配置 1.准备环境 JDK1.6 apache-tomcat-6.0.14 cas-server-3.4.2 2.配置server 将cas-server war文件复制到webapps下,启动tomcat,以相同用户名或密登录成功。3.配置数据库访问方式 复制modules下面所有jar文件到cas-server的Web-inf/lib下,并复制class12.jar(oracle 数据库驱动)。 修改配置数据源,在deployerConfigContext.xml中添加数据源。 oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@localhost:1521:orcl aip aip 修改登录验证方法,在deployerConfigContext.xml中注释原验证方式,改为数据库验证。重新启动,通过数据库验证用户成功. 三种验证方法: 相同用户名或密码 用select语句验证 指定表或字段

相关主题
文本预览
相关文档 最新文档