CAS单点登录技术研究解读.docx

上传人:b****7 文档编号:10304955 上传时间:2023-02-10 格式:DOCX 页数:22 大小:141.56KB
下载 相关 举报
CAS单点登录技术研究解读.docx_第1页
第1页 / 共22页
CAS单点登录技术研究解读.docx_第2页
第2页 / 共22页
CAS单点登录技术研究解读.docx_第3页
第3页 / 共22页
CAS单点登录技术研究解读.docx_第4页
第4页 / 共22页
CAS单点登录技术研究解读.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

CAS单点登录技术研究解读.docx

《CAS单点登录技术研究解读.docx》由会员分享,可在线阅读,更多相关《CAS单点登录技术研究解读.docx(22页珍藏版)》请在冰豆网上搜索。

CAS单点登录技术研究解读.docx

CAS单点登录技术研究解读

SSO单点登录技术研究报告

--基于CAS框架的分析与技术研究

 

 

目录

1引言4

1.1摘要4

1.2范围4

1.3读者对象4

1.4关键词4

2技术背景4

3CAS单点登录简介(针对实践选择的技术)5

3.1技术快速使用说明5

3.1.1设置服务器域名5

3.1.2生成证书(这里采用JDK自带的工具keytool)5

3.1.3为客户端JVM导入证书6

3.1.4将证书应用到Web服务器Tomcat7

3.1.5部署CAS服务器7

3.1.6深入配制CAS服务器7

3.1.7配制CAS客户端8

3.1.8用到的jar包8

3.1.9CAS深入研究8

4开发环境的配置8

5运行环境的配置9

6结束语9

7参考文献9

1引言

1.1摘要

单点登录(Singlesignon),简称SSO,是目前比较流行的企业业务整合的解决方案之一。

SSO的定义是在多个系统中,用户只需要登录一次就可以在各各相互信任的系统中进行切换。

本文主要介绍它的简单部署以及源码分析,逻辑分析。

官网:

http:

//www.jasig.org/cas

1.2范围

单点登录的配置、登录方式、项目之间建立的信任关系。

单点登录的客户端服务端处理逻辑,源码分析。

1.3读者对象

技术组人员

1.4关键词

CAS、SSO、单点登录

2技术背景

⏹技术原理

当用户第一次访问系统时,因为还没有登录,所以会被引入到认证系统中进行登录,根据用户提供的身份信息,系统进行校验,如果通过效验则返回给用户一个Ticket认证凭据,用户再次访问别的系统时就会将此Ticket带上做为自己的认证凭据送到认证系统中进行效验,检查Ticket的合法性,如通过效验则不必登录直接进入第二个系统。

⏹目前主要流行的产品列表

AccessMatrixUSO(byi-SprintInnovations)

Athensaccessandidentitymanagement

CentralAuthenticationService(CAS)

COMA

CoSign

DistributedAccessControlSystem(DACS)

EnterpriseSignOnEngine

EvidianEnterpriseSSO

Facebookconnect

FreeIPA

GlobalLoginSystem

ImprivataOneSign(Enterprisesinglesign-onandstrongauthentication)

JBossSSO

JOSSO(OpenSourceSingleSign-OnServer)

Kerberos

myOneLogin(Securesinglesign-onforthecloud)

OneLogin(singlesign-onanduserprovisioningforthecloud)

OpenAM(previouslyOpenSSO)

OpenASelect

Passlogix

SAML

SecureNetworkCommunications

Shibboleth

Smartcard

TigerOneConnect

UbuntuSingleSignOn(OpenID-basedsinglesignonservice)

WindowsLiveID

⏹在项目中做出的技术选择以及原因

Ø选择的技术:

CAS

Ø原因:

项目开源、企业中用此技术的比较多、较稳定、网络参考资料较多。

3CAS单点登录简介(针对实践选择的技术)

3.1技术快速使用说明

3.1.1Http配置教程

1.首先是需要在CAS服务器配置是CAS服务器端支持http协议方式

主要改进一下配置文件:

ticketGrantingTicketCookieGenerator.xml配置文件:

[html]viewplaincopyprint?

1

2p:

cookieSecure="true"

3p:

cookieMaxAge="-1"

4p:

cookieName="CASTGC"

5p:

cookiePath="/cas"/>

将这个地方的配置改为下面的配置:

[html]viewplaincopyprint?

6

7p:

cookieSecure="false"

8p:

cookieMaxAge="-1"

9p:

cookieName="CASTGC"

10p:

cookiePath="/cas"/>

warnCookieGenerator.xml配置文件

[html]viewplaincopyprint?

11

12p:

cookieSecure="true"

13p:

cookieMaxAge="-1"

14p:

cookieName="CASPRIVACY"

15p:

cookiePath="/cas"/>

将这个地方的配置改为下面的配置:

[html]viewplaincopyprint?

16

17p:

cookieSecure="false"

18p:

cookieMaxAge="-1"

19p:

cookieName="CASPRIVACY"

20p:

cookiePath="/cas"/>

deployerConfigContext.xml配置文件:

[html]viewplaincopyprint?

21

22p:

httpClient-ref="httpClient"

23/>

将这个地方的配置文件修改为下面的配置:

[html]viewplaincopyprint?

24

25p:

httpClient-ref="httpClient"

26p:

requireSecure="false"

27/>

完成这些地方的修改后,服务器端就支持了http协议的访问了下面开始客户端的改动,客户端其实就是将client.jar包里面关于https协议的处理代码给屏蔽掉,已经重新打jar包出来了,直接就能使用。

原理如下。

看过CAS客户端的源码的都知道,在配置过滤器类中,都做了访问协议的判断如下代码:

[html]viewplaincopyprint?

1if(casServiceUrl!

=null){

2if(!

(casServiceUrl.startsWith("https:

//")||(casServiceUrl.startsWith("http:

//")))){

3thrownewServletException("serviceURLmuststartwithhttp:

//orhttps:

//;itscurrentvalueis["+casServiceUrl+"]");

4}

5}

所以首先我们要做的是需要将casclient.jar的源码找到,将上面类似的这种协议判断屏蔽掉。

具体在一下2个类里面:

第一个是:

CASFilter这个类里面中的init()方法中,https的判断屏蔽后如下:

[html]viewplaincopyprint?

6if(casGateway&&Boolean.valueOf(casRenew).booleanValue()){

7thrownewServletException("gatewayandrenewcannotbothbetrueinfilterconfiguration");

8}

9if(casServerName!

=null&&casServiceUrl!

=null){

10thrownewServletException("serverNameandserviceUrlcannotbothbeset:

chooseone.");

11}

12if(casServerName==null&&casServiceUrl==null){

13thrownewServletException("oneofserverNameorserviceUrlmustbeset.");

14}

15/*if(casServiceUrl!

=null){

16if(!

(casServiceUrl.startsWith("https:

//")||(casServiceUrl.startsWith("http:

//")))){

17thrownewServletException("serviceURLmuststartwithhttp:

//orhttps:

//;itscurrentvalueis["+casServiceUrl+"]");

18}

19}*/

20

21if(casValidate==null){

22thrownewServletException("validateUrlparametermustbeset.");

23}

24/*if(!

casValidate.startsWith("https:

//")){

25thrownewServletException("validateUrlmuststartwithhttps:

//,itscurrentvalueis["+casValidate+"]");

26}

27*/

28if(casAuthorizedProxy!

=null){

29

30//parseandrememberauthorizedproxies

31StringTokenizercasProxies=

32newStringTokenizer(casAuthorizedProxy);

33while(casProxies.hasMoreTokens()){

34StringanAuthorizedProxy=casProxies.nextToken();

35/*if(!

anAuthorizedProxy.startsWith("https:

//")){

36thrownewServletException("CASFilterinitializationparameterforauthorizedproxies"+

37"mustbeawhitespacedelimitedlistofauthorizedproxies."+

38"Authorizedproxiesmustbesecure(https)addresses.Thisonewasn't:

["+anAuthorizedProxy+"]");

39}*/

40this.authorizedProxies.add(anAuthorizedProxy);

41}

42}

第二个是:

edu.yale.its.tp.cas.util.SecureURL这个类里面的retrieve方法中,屏蔽后如下:

[html]viewplaincopyprint?

43URLu=newURL(url);

44/*if(!

u.getProtocol().equals("https")){

45//IOExceptionmaynotbethebestexceptionwecouldthrowhere

46//sincetheproblemiswiththeURLargumentwewerepassed,not

47//IO.-awp9

48log.error("retrieve("+url+")onanillegalURLsinceprotocolwasnothttps.");

49thrownewIOException("only'https'URLsarevalidforthismethod");

50}*/

51

52URLConnectionuc=u.openConnection();

重新打包后将casclient.jar更新到我们的程序第三方lib包中。

做完这些,就能达到能让服务器利用http协议进行登录cas服务端的效果。

3.1.2Https配置教程

3.1.2.1设置服务器域名

⏹修改hosts文件

在SERVER端C:

\\Windows下搜索hosts文件,并在最后边一行加上如下内容:

127.0.0.1castest#Server

同样在CLIENT端也应有相对应的设置:

SERVERIPcastest#client(这里的SERVERIP是指服务端的IP)

3.1.2.2生成证书(这里采用JDK自带的工具keytool)

⏹简述:

CAS单点登录系统中服务端与客户端进行安全通信的保障就是证书钥匙,这里的证书是采用JDK所自带的keytool生成的证书,如果是在正式环境中部署应去供应商处购买。

⏹官网:

3.1.2.3生成服务器端证书文件

Keytool–genkey–aliasserver–keyalgRSA–keystoreserverkey

注:

这里的名字与姓氏最好填写域名,严禁使用IP,此处密码采用的是changeit与JDK默认密码一致,可随意设置(不要忘记)。

3.1.2.4导出服务端证书

Keytool–export–fileserver.crt–aliasserver–keystoreserverkey

注:

此处密码与上方设置密码相同

3.1.2.5为客户端JVM导入证书

将生成的server.crt文件分发给各个客户端后,使用CMD命令为JVM导入证书。

Keytool–import–keystore%java_home%\jre\lib\cacerts–fileserver.crt–aliasserver

视个人情况而定,网上好多帖子都说是jre下的cacerts而不是jdk/jre/cacerts,这主要是看tomcat用哪个jre,视个人情况而论。

此所用到的是jdk中的jre

也可以自己指定目录,创建完cacerts后再将其复至到jre/lib/security/也可以。

但这样会覆盖JDK原有的证书(不建议使用)

至此基本环境已经配好。

注:

此部署是在客户机上导入,不需要在服务器中导入。

3.1.2.6将证书应用到Web服务器Tomcat

启用Tomcat的https加密协议,至于为什么加密自己去GOOGLE一下。

将Tomcat下的conf/server.xml里如下代码的注释去掉,并加入证书的路径和密码。

OK,这样SSL就启用成功了,可以进入https:

//castest:

8443/查看一下是否启用成功

注:

此步客户端与服务端都需要配置,直接将服务器端生成的文件发给客户端使用即可,此处所用到的serverkey是在服务端生成的证书文件,密码为自定义设置的密码

3.1.3部署CAS服务器

⏹CAS服务端下载:

http:

//www.jasig.org/cas/download

⏹下载的包解压后,将cas-server-3.4.5\modules\cas-server-webapp-3.4.5.war复制到webapps目录下,重命名为cas.war

⏹启动TOMCAT访问地址:

https:

//castest:

8443/cas/login

⏹输入admin/admin(用户名和密码相同即可)后即可登录,登录成功后的页面为:

如果没有成功,请仔细检查上边的步骤

3.1.4深入配制CAS服务器

上边的登录只是CAS默认的登录,在我们的系统应用中都是从数据库中获取的信息,所以这里需要更改一下配置。

⏹将deployerConfigContext.xml中的如下行注释掉:

⏹加入代码,见附件1

⏹将所用连接的数据库驱动和cas-server-support-jdbc-3.4.3.1.jar放入工程中的lib下

⏹cas.properties中使用哪种数据库就将相应驱动前边的#去掉

3.1.5配制CAS客户端

⏹http配置使用cas-client-http.jar

⏹https配置使用cas-client-https.jar,地址:

http:

//www.ja-sig.org/downloads/cas-clients/,然后解压cas-client-3.2.0.zip,在modules文件夹中有需要的jar包,请根据自己的项目情况选择使用

⏹设置web.xml的filter如下

xmlversion="1.0"encoding="UTF-8"?

>

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"version="2.5"

xsi:

schemaLocation="

--解决中文乱码问题-->

springfilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

UTF-8

springfilter

/*

--解决中文乱码问题-->

 

--用于单点退出-->

org.jasig.cas.client.session.SingleSignOutHttpSessionListener

CASSingleSignOutFilter

org.jasig.cas.client.session.SingleSignOutFilter

--用于单点登录-->

CASFilter

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

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

--loginUrl:

服务端tomcat所启动的ip和port-->

http:

//192.168.168.141:

8080/casServer/login

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

--validateUrl:

服务端tomcat所启动的ip和port-->

http:

//192.168.168.141:

8080/casServer/serviceValidate

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1