JA SIG CAS 最新教程
- 格式:docx
- 大小:370.62 KB
- 文档页数:6
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 <localhost>实战:C:\Documents and Settings\wangyoushi8>keytool -genkey -alias sjc -keyalg RSA -keystorec:/store/mykey输入keystore密码:sunjuncai您的名字与姓氏是什么?[Unknown]:gaofeng.nmc.hamcc您的组织单位名称是什么?[Unknown]:上海神洲数港您的组织名称是什么?[Unknown]:网络优化您所在的城市或区域名称是什么?[Unknown]:郑州您所在的州或省份名称是什么?[Unknown]:河南该单位的两字母国家代码是什么[Unknown]:ZHCN= gaofeng.nmc.hamcc, OU=上海神洲数港, O=网络优化, L=郑州, ST=河南, C=ZH 正确吗?[否]:y输入<sjc>的主密码(如果和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保存在文件中的认证<c:/store/server.crt>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目录.至此,第一步完成。
CAS示例环境部署及配置一、示例说明在本示例中将使用cas-server-3.5.0和cas-client-3.2.1搭建一个SSO测试环境,在同一台机器上安装3个tomcat,分别部署一个cas server和两个cas client,这三个应用使用不同的域名访问(通过配置hosts文件实现多个域名)。
配置完成之后,应达到如下效果:1、首先访问app1,此时需要跳转到cas登录页面,要求用户进行登录;2、输入正确的用户名和密码,登录成功之后自动跳转到app1,而且可以获取到用户的登录信息;3、在同一个浏览器中直接访问app2,此时不需要再次用户登录即可正常访问,而且可以获取到登录用户的信息;4、反复访问app1和app2,只要不关闭浏览器,就可以一直正常访问并且可以获取到用户信息;5、在浏览器地址栏输入CAS登出的路径(https://:8443/cas/logout),系统提示成功注销;6、此时无论访问app1还是app2,都会跳转到cas登录页面,要求用户重新登录。
二、部署文件清单三、准备部署环境本文演示过程在同一个机器上的(也可以在三台实体机器或者三个的虚拟机上),根据演示需求,我们需要准备三个不同的域名,分别对应cas server和两个cas客户端应用,用修改hosts 文件的方法添加域名最简单方便(这个非常重要),在文件c:\windows\system32\drivers\etc\hosts 文件中添加三条127.0.0.1 127.0.0.1 127.0.0.1 其中:对应部署cas server的tomcat,如果这个tomcat使用https 协议,则这个虚拟域名还用于证书生成;另外两个域名对应两个不同的客户端应用。
安装JDK,配置JAVA_HOME、PATH环境变量;在D盘根目录复制三个TOMCAT 文件夹,分别命名为tomcat-for-cas、tomcat-for-client-1、tomcat-for-client-2;这个详细过程就不再详细描述。
CAS客户端服务器端配置步骤cas介绍:CAS 是Yale 大学发起的一个开源项目,旨在为Web 应用系统提供一种可靠的单点登录方法,CAS 在2004 年12 月正式成为JA-SIG 的一个项目。
CAS 具有以下特点:∙开源的企业级单点登录解决方案。
∙CAS Server 为需要独立部署的Web 应用。
∙支持非常多的客户端(这里指单点登录系统中的各个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)简洁说明和设计方案(转)1. 单点登录概述所谓单点登录(SSO),只当企业用户同时访问多个不同(类型的)应用时,他们只须要供应自身的用户凭证信息(比如用户名/密码)一次,仅仅一次。
SSO解决方案(比如,CAS)负责统一认证用户,假如须要,SSO也可以完成用户的授权处理。
可以看出,当企业用户在不同的应用间切换时,他们不用再重复地输入自身的用户凭证了。
在实施SSO后,所用的认证操作都将交给SSO认证中心。
现有的SSO解决方案特殊多,比如微软的MSN Passport便是典型的SSO解决方案,各Java EE容器都供应了自身的专有SSO实力。
2. CAS的总体架构1. CAS简介CAS(中心认证服务)是建立在特殊开放的协议之上的企业级SSO解决方案。
诞生于2001年,在2002年发布了CAS2.0协议,这一新的协议供应了Proxy(代理)实力,此时的CAS2.0支持多层SSO实力。
到2005年,CAS成为了JA-SIG旗下的重要子项目。
由于CAS2.0版本的可扩展实力不是特殊完备,而且他的架构设计也不是很卓越,为了使得CAS能够适用于更多场合,JA-SIG打算开发出同时遵循CAS1.0和CAS2.0协议的CAS3.X版本。
现在的CAS3全面拥抱Spring技术,比如Spring DI容器和AOP技术、Spring Web MVC、Spring Web Flow、Spring Ldap Template等。
通常,CAS3由两部分内容构成:CAS3服务器和CAS客户端。
由于CAS2.0协议借助于XML数据结构和客户进行交互,因此开发者可以运用各种语言编写的CAS3客户和服务器进行通信。
CAS3服务器接受纯Java开发而成,它要求目标运行环境实现了Servlet2.4+规范、供应Java SE 1.4+支持。
假如宿主CAS3服务器的目标Java EE容器仅仅实现了Servlet2.3-规范,则在对CAS3服务器进行少量的改造后,CAS3也能运行其中。
CAS入门使用手册1.准备工作本文中的例子以 tomcat5.5 为例进行讲解,下载地址:/download-55.cgi到 CAS 官方网站下载 CAS Server 和 Client,地址分别为:/downloads/cas/cas-server-3.1.1-release.zip/downloads/cas-clients/cas-client-java-2.1.1.zip2.首先制作证书1).创建证书库:C:\cas>keytool -genkey -keyalg RSA -alias tomcatsso -keystore server.keystore -storepass changeit ;如下图:生成文件:2)导出证书文件:C:\cas>keytool -export -alias tomcatsso -file server.crt -keystore server.keystore -storepass changeit ;如下图:生成文件:3)导入证书将生成的证书导入到JDK和JRE中,进入%JAVA_HOME%\jre1.6.0_05\lib\security目录,将生成的server.crt拷贝到这里(此操作之前最好先备份JDK和JRE以前的cacert文件),执行命令:C:\cas>keytool -import -alias tomcatsso -file server.crt -keystore cacerts -storepass changeit ;如下图:至此证书成功加入到文件中。
将这个文件复制替换%JAVA_HOME%\jdk1.6.0_05\jre\lib\security下的那个文件。
4)修改Tomcat的server.xml配置,找到<!--<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" />-->去掉注释并改为:<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS"keystoreFile="C:/cas/server.keystore"keystorePass="changeit"truststoreFile="C:/Program Files/Java/jre1.6.0_05/lib/security/cacerts"truststorePass="changeit"/>访问https://localhost:8443/能访问到就配置成功了3.服务器部署以及数据源配置1)部署方法将下载好的服务器压缩包解压之后得到源代码,包,以及部署的war文件,war文件位于modules文件夹之中,将其拷贝到Tomcat的webapp文件夹下,2)引入包加入相关的数据库驱动包mysql-connector-java-5.1.5-bin.jarspring-jdbc-2.5.5.jarcas-server-support-jdbc-3.3.1.jar3)配置数据源在cas服务器的WEB-INF\deployerConfigContext.xml配置文件中配置数据源(这里使用的是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.0.158:3306/cqbcp</value></property> <property name="username"><value>root</value></property><property name="password"><value>root123</value></property></bean>4)通过数据库验证登陆Cas默认的验证方式是只要用户名和密码相同就能登陆成功,要想去掉这种验证方式,改为在通过数据库验证首先找到:删除这行则去掉了简单的验证方式,然后加入:<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"><property name="sql" value="select LoginPwd from c_cons where LoginNo=?"/><property name="dataSource" ref="dataSource"/></bean>则可以通过配置的数据源验证用户名和密码是否相同。
CAS做单点登陆(SSO)——部署CAS安装CAS让我们先简单了解下CAS。
全称 Central Authentication Service,中文翻译为中央认证服务,官方网址是/cas。
它是一个开源产品。
具有如下特点:1.用它做各个系统的集成后,各个系统只需关注跟CAS做集成即可,不会引入系统间的任何依赖。
2.各个系统集成后,登陆的认证中心在CAS,各个系统只能从CAS获得用户输入的用户名,然后自动完成登陆。
另外,CAS认证支持对数据库表的查询和比较。
3.CAS默认使用HTTPS协议,需要安装CA(Certificate Authority,中文名叫数字证书认证机构)证书。
如果不想启用HTTPS,请参考CAS不起用HTTPS。
下面介绍中默认为采用HTTPS协议。
安装步骤:定义域名HTTPS信任域名,而不信任IP。
因此需要先设定一个域名,如果不采用HTTPS,可以跳过这个一步。
假定域名设置为。
在C:\Windows\System32\drivers\etc\hosts添加内容如下:127.0.0.1 生成CA证书证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书。
我们这边用JDK自带的keytool工具生成证书, 如果以后真正在产品环境中使用肯定要去证书提供商去购买。
购买正版证书,请查看购买证书。
用JDK自带的keytool工具生成密钥库,在命令行输入:keytool -genkey -alias aurora -keyalg RSA -keystoreE:/tomcats/tomcat7/keystore/aurora没有Keytool这个命令?请参考设置JAVA环境变量。
以上这个命令就是在E:/tomcats/tomcat7/keystore/aurora上建立一个别名叫aurora,算法是RSA的证书库。
这里E:/tomcats/tomcat7/keystore/这个目录需要预先存在。
基于.net的CAS登录集成说明:此方案需要部署CAS登录服务器支持。
使用CAS的SSO功能,可以实现单点登录的基本功能。
基本原理是:从重定向到cas搭建的sso 服务器,通过认证后cas服务器会返回一个带ticket参数的链接给,.net程序然后使用ticket参数再次访问cas服务器,可以获得用户登录的ID(只能访问一次)。
/downloads/cas-clients上有各种平台上的CAS客户端。
一般,从/downloads/cas-clients/dotnet/下载cas .net客户端,是一个dll文件,可以在项目中引用,然后通过下边的代码就可以使用:在web.config文件中增加关于cas服务器和本地服务的地址信息:<configuration><appSettings><add key="casLoginURL"value="https:///cas/login" /><add key="casValidateURL"value="https:///cas/serviceValidate" /><add key="serviceURL"value="/CASTestServiceValidation/De fault.aspx" /></appSettings></configuration>然后在一个页面中,使用下边的代码调用就可以了:using DotNetCASClient;protected void Page_Load(object sender, EventArgs e) {String userId = (String) Session["userId"];if (userId == null) {DotNetCASClientServiceValidate client = new DotNetCASClientServiceValidate();userId = client.Authenticate(Request, Response, true);lblCas.Text = "Had to authenticate via CAS...";}Session["userId"] = userId;lblResult.Text = userId;}也可以在web.config中加入:<system.web><authorization><deny users="?" /></authorization><authentication mode="Forms" ><forms loginUrl="LoginPage.aspx" /></authentication></system.web>这样强制用户认证。
cas 认证流程CAS认证流程是一种常用的用户认证方式,是基于单点登录(SSO)的一种安全认证协议。
下面就来详细了解一下CAS认证流程的步骤。
1.用户访问被保护的应用服务用户首先访问需要认证的应⽤服务,例如企业门户或者是OA系统等,这时会重定向到CAS服务器。
2.CAS服务发出请求当⽤户访问应用服务的时候,应用程序将负责控制的过程转化为对CAS server的认证请求。
这个请求包括了许多重要的参数,例如:服务请求地址。
3.CAS服务器发起回调请求在用户登录之前,由CAS服务器发起的应用程序回调请求,让程序知道用户是否已经被认证和请求的ticket是否合法。
如果这个ticket没有问题,CAS服务器就会将用户凭据返回给应用程序的指定地址。
4.用户进行证书认证在这一步中,CAS向用户询问用户名和密码。
这种方式被称为“cas用户名密码验证”,用户在此处进行了证书认证。
5.CAS服务器发出TICKET如果用户名和密码认证成功,CAS服务器将会通过HTTP重定向的方式,将一个TICKET交给初始引导用户请求的应用程序。
6.访问应用程序之后,应用程序将会请求CAS服务器进行验证,CAS server采用密钥对加密,对TICKET进行验证,如果没有问题,CAS server就会给予通过访问应用程序的权限。
7.应用程序将用户重定向到初始页面到这里,用户已经被认证并获得了权限,这使得应用程序能够在保证认证安全性的情况下向用户提供服务。
以上就是整个CAS认证流程的步骤。
通过实现CAS单点登录认证,企业可以大大提高员工使用系统的效率,并且保障了系统的安全。
一、下载服务器端和客户端网址: /cas/download二、安装服务器端1.解压cas-server-3.5.1-release.zip将cas-server-3.5.1\modules\cas-server-webapp-3.5.1.war拷贝到webapps下,并重命名为cas.war2.使用Java Keytool工具为系统生成HTTPS证书,并为系统注册下载Keytool.ext编写bat文件,注意1、仔细看注释,了解每一个以及需要注意的地方。
2、jdk的安装路径不能有中文且不能包含空格。
内容如下clsrem please set the env JAVA_HOME before run this bat filerem delete alia tomcat if it is existedkeytool -delete -alias tomcatsso -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeitkeytool -delete -alias tomcatsso -storepass changeit::(注释:清除系统中可能存在的名字为tomcatsso 的同名证书)rem list all alias in the cacertskeytool -list -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit::(注释:列出系统证书仓库中存在证书名称列表)rem generator a keykeytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=localhost" -storepass changeit::(注释:指定使用RSA算法,生成别名为tomcatsso的证书,存贮口令为changeit,证书的DN为"cn=localhost" ,这个DN必须同当前主机完整名称一致哦,切记!!!)rem export the keykeytool -export -alias tomcatsso -file %java_home%/jre/lib/security/tomcatsso.crt -storepass changeit::(注释:从keystore中导出别名为tomcatsso的证书,生成文件tomcatsso.crt)rem import into trust cacertskeytool -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通讯就找不到证书了)rem list all alias in the cacertskeytool -list -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit ::(注释:列出jre可信任证书仓库中证书名单,验证先前的导入是否成功,如果导入成功,应该在列表中能找到tomcatsso这个别名,如下图)执行bat第一次询问:回车确认第二次询问输入y 回车执行完成后,进行确认,包含三个要素:第一个有tomcatsso关键字第二个D:\java\jdk1.6.0_18_win_x86\jre\lib\security下有tomcatsso.crt第三个C:\Users\Administrator下有.keystore3.配置Tomcat的HTTPS服务apache-tomcat-6.0.14\conf下的server.xml<Connector protocol="org.apache.coyote.http11.Http11Protocol"port="8443" minSpareThreads="5" maxSpareThreads="75"enableLookups="true" disableUploadTimeout="true"acceptCount="100" maxThreads="200"scheme="https" secure="true" SSLEnabled="true"keystoreFile="C:/Users/Administrator/.keystore"keystorePass="changeit"truststoreFile="D:/java/jdk1.6.0_18_win_x86/jre/lib/security/cacerts"clientAuth="false" sslProtocol="TLS"/>4.启动服务器,访问https://localhost:8443/测试一下第一次进会弹出添加例外的页面(FF下),添加后就可以看如下面,则表示成功5.三、配置客户端1.解压cas-client-3.2.1-release.zip,将cas-client-3.2.1\modules下的复制到项目的WEB-INFO\lib中2.配置单点登录监听器和过滤器<listener><listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</liste ner-class></listener><!-- 单点登录过滤器--><filter><filter-name>CAS Single Sign Out Filter</filter-name><filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter><filter-mapping><filter-name>CAS Single Sign Out Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--该过滤器负责用户的认证工作,必须启用它--><filter><filter-name>CASFilter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param><param-name>casServerLoginUrl</param-name><param-value>https://localhost:8443/cas/login</param-value><!--这里的server是服务端的IP --></init-param><init-param><param-name>serverName</param-name><param-value>http://localhost:8080/</param-value></init-param></filter><filter-mapping><filter-name>CASFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 该过滤器负责对Ticket的校验工作,必须启用它--><filter><filter-name>CAS Validation Filter</filter-name><filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter </filter-class><init-param><param-name>casServerUrlPrefix</param-name><param-value>https://localhost:8443/cas</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://localhost:8080/</param-value></init-param></filter><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping>3.四、测试访问页面,第一次访问会提示安全信息,将其添加到例外(火狐浏览器)跳转到登录页面输入相同的用户名密码即可,例如aaa/aaa 是不是已经跳转到目标页面了呢~五、。