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.40mons-dbcp-all-1.3-r699049.jar5.mysql-connector-java-5.1.18-bin.jar6.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.war3.修改host文件(C:\Windows\System32\drivers\etc)添加127.0.0.1 注意:如果想在一台PC机上模拟这个单点登录,就必须域名重定向,如果是多台PC机,可以不配置此项,下文有用到,可以用相应PC机的IP代替4.修改Tomcat文件下的server.xml(apache-tomcat-7.0.40\conf\server.xml)添加内容:<Host name="" appBase="cas"unpackWARs="true" autoDeploy="true"></Host>5.启动Tomcat服务,查看信息,(如果有报错,可以根据信息查找错误),打开浏览器,输入:8080如果出现以下界面,则CAS服务端配置成功。
注:这个是最简单的CAS服务,只要输入的用户名跟密码一样,就可以正常登陆,在我们实际开发中,这个验证因为跟数据库作比较,接下来,我们就配置数据库校验。
第二步:配置数据库验证1.打开deployerConfigContext.xml,在apache-tomcat-7.0.40\cas\ROOT\WEB-INF目录下,找到如下代码:<property name="authenticationHandlers">添加下面代码:<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"><!--这里sql属性是从user表中根据cas登陆名查找密码--><property name="sql" value="select password from user where username=?" /><property name="dataSource" ref="dataSource" /></bean>2.增加数据源dataSource,在deployerConfigContext.xml,(跟上面同一个文件)找到<bean id="serviceRegistryDao" class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl" />,在下面添加如下代码:<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property><property name="url"><value>jdbc:mysql://127.0.0.1:3306/sso</value><!---根据自己的数据库URL地址--></property><property name="username"><value>root</value><!--根据自己的数据库用户名--></property><property name="password"><value></value><!--根据自己的数据库密码--></property></bean>3.数据库添加用户表及数据(这里用的Mysql),添加语句如下:create database if not exists `sso`;USE `sso`;DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (`id` int(11) NOT NULL default '0',`username` char(100) NOT NULL,`password` char(100) NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;insert into `user`(`id`,`username`,`password`) values (1,'admin','admin123');4.增加jar包,commons-dbcp-all-1.3-r699049.jar,cas-server-jdbc-3.0.5-rc2.jar,mysql-connector-java-5.1.18-bin.jar包拷贝到apache-tomcat-7.0.40\cas\ROOT\WEB-INF\lib目录下。
5.重启Tomcat,打开浏览器,输入:8080/,输入数据库里的用户名和密码,如果出现如下界面,则配置成功。
现在我们的CAS服务端已经配置好了,接下来,我们配置客户端第二节:配置自己的Web工程(客户端)1.在host文件下,添加如下代码:127.0.0.1 127.0.0.1 注意:这个网址最好不要用互联网已经存在的域名,否则你将无法访问该地址。
如果想在一台PC机上模拟这个单点登录,就必须域名重定向,如果是多台PC机,可以不配置此项,下文有用到,,可以用相应PC机的IP代替1.在Tomcat 根目录下创建一个sso1,sso2目录。
如下如:5.在eclipse新建两个web工程,分别为sso1,sso2。
6.在自己的Web工程里加入cas-client-core.jar,commons-logging-1.1.jar,(解压cas-client-3.2.0-release.zip,在cas-client-3.2.0-release.zip\cas-client-3.2.0\modules,找到改JAR 包)。
7.分别加入到sso1,sso2工程的lib里。
7.修改sso1下的web.xml。
添加如下代码:<filter><filter-name>CAS Authentication Filter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><!-- CAS服务端登录地址--><init-param><param-name>casServerLoginUrl</param-name><param-value>:8080/login</param-value></init-param><!-- 当前网站域名--><init-param><param-name>serverName</param-name><param-value>:8080</param-value></init-param><init-param><param-name>renew</param-name><param-value>false</param-value></init-param><init-param><param-name>gateway</param-name><param-value>false</param-value></init-param></filter><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>:8080/</param-value></init-param><init-param><param-name>serverName</param-name><param-value>:8080</param-value></init-param><!--代理时启用--><!--<init-param><param-name>proxyCallbackUrl</param-name><param-value>https://localhost:8443/mywebapp/proxyCallback</param-value> </init-param><init-param><param-name>proxyReceptorUrl</param-name><param-value>/mywebapp/proxyCallback</param-value></init-param>--></filter><filter><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class></filter><filter><filter-name>CAS Assertion Thread Local Filter</filter-name><filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class></filter><filter-mapping><filter-name>CAS Authentication Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS Assertion Thread Local Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/proxyCallback</url-pattern></filter-mapping>8.修改sso2下的web.xml。
CAS示例环境部署及配置完整版
C A S示例环境部署及配置一、示例说明在本示例中将使用cas-server-3.5.0和cas-client-3.2.1搭建一个SSO测试环境;在同一台机器上安装3个tomcat;分别部署一个casserver和两个casclient;这三个应用使用不同的域名访问通过配置hosts文件实现多个域名..配置完成之后;应达到如下效果:1、首先访问app1;此时需要跳转到cas登录页面;要求用户进行登录;2、输入正确的用户名和密码;登录成功之后自动跳转到app1;而且可以获取到用户的登录信息;3、在同一个浏览器中直接访问app2;此时不需要再次用户登录即可正常访问;而且可以获取到登录用户的信息;4、反复访问app1和app2;只要不关闭浏览器;就可以一直正常访问并且可以获取到用户信息;5、在浏览器地址栏输入CAS登出的路径;系统提示成功注销;6、此时无论访问app1还是app2;都会跳转到cas登录页面;要求用户重新登录..二、部署文件清单三、准备部署环境本文演示过程在同一个机器上的也可以在三台实体机器或者三个的虚拟机上;根据演示需求;我们需要准备三个不同的域名;分别对应casserver和两个cas客户端应用;用修改hosts文件的方法添加域名最简单方便这个非常重要;在文件c:\windows\system32\drivers\etc\hosts文件中添加三条cas.demoapp1.demodemo其中:对应部署casserver的tomcat;如果这个tomcat使用https协议;则这个虚拟域名还用于证书生成;另外两个域名对应两个不同的客户端应用..安装JDK;配置JAVA_HOME、PATH环境变量;在D盘根目录复制三个TOMCAT文件夹;分别命名为tomcat-for-cas、tomcat-for-client-1、tomcat-for-client-2;这个详细过程就不再详细描述..四、CASSERVER部署及通用配置3.1CASSERVER部署cas-server-xxxx.war的下载地址为;本文以cas-server-3.5.0.zip为例;解压提取cas-server-3.5.0/modules/cas-server–webapp-3.5.0.war文件;把此文件复制到tomcat-for-cas\webapps目录并解压到cas文件夹如果不准备对CAS的文件做修改;则可以直接将WAR文件修改为cas.war即可..启动tomcat此tomcat的默认监听端口为8090;在浏览器地址栏输入:ht;按回车键后地址栏会自动变为;并显示如下界面:在登录窗口中;用户名和密码都输入admin实际上可以输入任何值;只要用户名和密码一致;就可以成功登录;这个是CAS的默认验证规则;然后点击登录;会出现如下界面:至此;CASSERVER的应用已经部署成功;接下来就是根据情况进行配置..3.2CASSERVER通用配置1.配置CASSERVER节点名称在文件${CAS}/WEB-INF/cas.properties中的值;比如修改为cas01..2.去除登录页面的“Non-secureConnection”提示如果部署CASSERVER的TOMCAT没有启用HTTPS或者没有通过HTTPS端口访问;则会出现如下提示;想要去掉这个提示;只能修改登录页面..五、CAS客户端的部署及配置4.1客户端应用的部署按照常规方式部署使用CAS作为单点登录服务器的应用;并测试此应用是否能正常访问;我们使用的是一个测试应用;只有一个jsp页面;将这个应用放到准备好的tomcat-for-client-2/webapps下面即可;访问应用的跟目录;如果显示正常的页面即表示应用部署成功;我的测试应用显示如下信息:4.2复制CASCLIENT需要的JAR文件复制CAS核心文件和其所依赖的JAR;不同版本的CAS需要的JAR文件可能稍微有所不同;本例使用的是cas-client-core-3.2.1;需要的JAR文件如下所示:4.3配置web.xml文件有关cas-client的web.xml修改的详细说明见官网介绍:我们这里只介绍将会用到的最简单的配置;将如下内容复制到web.xml中;需要注意的是SingleSignOutFilter的映射一定要写在其他过滤器的最前面;至少是过滤器CASAuthenticationFilter的前面;然后根据实际情况修改参数即可;如下所示突出显示的部分:4.4部署结果测试配置完成后;启动CASSERVER所在的tomcat和CAS客户端所在的tomcat;然后打开浏览器输入网址;此时浏览器会自动进行跳转到CAS的登录页面;地址栏会显示如下的地址:;同时会看到如下所示的登录界面:在登录窗口中;用户名和密码都输入admin;然后点击登录;系统会自动跳转到登录之前我们要访问的地址;出现如下界面:至此;一个简单的CAS测试环境就搭建成功了..六、为CASSERVER配置HTTPS5.1获取安全证书通常可以从一些安全机构申请安全证书;但是要支付一定的费用;在本试验中;我们使用JDK自带的工具keytool生成一个证书;生成证书的命令为:在上面的命令行中;突出显示的部分为需要修改的部分;其他参数可以默认;也可以参照keytool的参数说明进行修改;其中参数alias指定了证书的别名;以后对证书的操作会用到此名称;我们这里设置为cas;keystore指定了证书存在磁盘上的文件路径;即我们需要将生成的证书存放在哪里..创建证书的过程如下所示;需要注意的是途中画红方框的地方;这个值需要与访问cas 时的域名或者cas所在的计算机名保持一致;最后一个密码和keystore的密码保持一致即可;密码是casserver..5.2配置CASSERVER使用的TOMCAT默认情况下;tomcat是没有开启https端口的;因此需要在TOMCAT/conf/server.xml中进行手动配置..首先找到如下代码的位置:在配置文件中添加红框中所示的代码;其中keystoreFile为我们生成的证书文件的存放路径;keystorePass为生成证书时输入的密码;本实验中我把证书文件复制到了server.xml 的目录下..5.3通过HTTPS访问CAS应用在浏览器中输入;出现如下所示的界面:点击“继续浏览此网站”即可跳转到我们熟悉的登录界面;此时你会发现;那个令人讨厌的“Non-secureConnection”提示也没有了:在登录窗口中;用户名和密码都输入admin实际上可以输入任何值;只要用户名和密码一致;就可以成功登录;这个是CAS的默认验证规则;然后点击登录;会出现如下界面5.4修改CAS客户端的配置将CAS客户端的web.xml中需要配置CASSERVERURL的地方做对应的修改;本例中;应将过滤器CASAuthenticationFilter的参数casServerLoginUrl的值由“/login”修改为“/login”;将过滤器CASValidationFilter的参数casServerUrlPrefix的值由“”修改为“”;修改完配置文件之后;重新启动tomcat;访问地址;浏览器依然会自动跳转到登录页面;但是当输入完用户名和密码;点击登录之后;就会出现如下的错误页面:上图对应的错误信息如下:出现这个错误的直接原因就是因为JVM没有找到访问时所需要的安全证书;现在出现这个错误是正常的;因为我们还没有将安全证书导入到JVM的证书库中;如果在以后的使用过程中出现这个错误;可以通过keytool的list命令查看JVM的证书库中是否有对应的证书.. 5.5为运行CASCLIENT的JVM设置安全证书CAS客户端在验证时;会从后台通过代码访问CASSERVER;此时是通过HTTPS进行访问的;因此运行CAS客户端的JVM会在JVM的证书库中查找与访问的域名对应的证书;然后使用此证书与CASSERVER建立会话..因此我们要告诉JVM到哪里获取安全证书..有两种方法可以达到这个目的;一个方法是在启动TOMCAT的时候为JVM指定证书的位置和访问密码;另一个方法是将安全证书导入到JVM的默认证书库中..1、为JVM指定可信证书库的位置在启动TOMCAT的启动参数中增加如下内容;也可以在启动TOMCAT之前将环境变量JAVA_OPTS设置为如下的值需要注意的是下面两行的内容不要换行:有两种方式指定JVM的启动参数;一种在tomcat/bin/catalina.bat中指定:一种是单独建一个文件;比如start-with-key.bat;然后在文件中加入下面的内容:修改完启动脚本之后;重新启动tomcat;访问地址;浏览器依然会自动跳转到登录页面;输入完用户名和密码;点击登录之后;就会自动跳转到我们需要访问的地址;并显示正常的页面..2、将安全证书导入到JVM默认的证书库中如果在启动JVM的时候没有指定安全证书的位置;当程序用到安全证书时;JVM将使用JRE默认的证书库;位置为%JAVA_HOME%\jre\lib\security\cacerts..因此我们需要做的就是将CASSERVER使用的安全证书导入到JRE的这个证书库中..首先使用keytool的export命令将keystore中的证书信息导出为cer格式的文件;命令格式为:keytool-export-aliascas-keystorecas.keystore-filecas.cer;其中keystore 指定了CASSERVERS使用的安全证书文件的路径我们前面生成的证书存放的路径;参数file 指定要将证书信息导出到哪个文件进行存放..本例中使用的是tomcat/conf下的证书文件;同时也将导出的证书放在了这个目录下:然后使用keytool的import命令将证书cas.cer中的信息导入到JVM的证书库中;命令格式为:keytool-import-aliascas-keystore“%JAVA_HOME%\jre\lib\security\cacerts”-filec as.cer;其中keystore指定了JVM的安全证书文件的路径;参数file指定要将哪个证书的信息导入..JVM证书库的默认密码是changeit..如果在导入证书时;提示证书已经存在;则使用keytool的delete命令将证书删除后再导入即可;命令的语法为keytool-delete-aliascas-keystore“%JAVA_HOME%\jre\lib\security\cacerts”..查看证书是否导入成功:确认证书导入成功之后;重新启动tomcat记得去掉指定安全证书库的启动参数呦;不然是看不到效果的;访问地址;浏览器依然会自动跳转到登录页面;输入完用户名和密码;点击登录之后;就会自动跳转到我们需要访问的地址;并显示正常的页面..至此;一个简单的CAS测试环境就搭建好了;既可以通过HTTP端口访问;也可以通过HTTPS 端口访问..。
CAS客户端服务器端配置步骤
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单点登录服务器的部署以及使用
CAS单点登录服务器的部署以及使用一.准备CAS服务器端和客户端1.Windows下a)cas服务器端压缩包cas-server-3.4.12-release.zipb)cas客户端压缩包cas-client-3.2.1-release.zip官网有下载/2.linux下a)cas服务器端压缩包cas-server-3.4.12-release.tar.gzb)cas客户端压缩包cas-client-3.2.1-release.tar.gz官网有下载/二.准备架包Oracle数据库驱动架包ojdbc6.jar三.安装CAS1.重新安装一个服务器,如tomcat。
2.部署CAS项目a)解压缩cas-server-3.4.12-release.(tar.gz/zip),进入解压后的cas-server-3.4.12-release目录下的modules中,取出cas-server-webapp-3.4.12.war,放入新安装的tomcat目录下的webapp下,修改war包的名字为cas.war,启动tomcat,将cas.war解压到webapp下,然后关闭服务器3.CAS服务器端证书相关操作。
a)生成服务器端证书Linux下命令:keytool -genkey -alias mycas -keyalg RSA -keystore/home/XXX/cas/key/mycas.keystorewindows下命令:keytool -genkey -alias mycas -keyalg RSA -keystore D\cas\key\mycas.keystore 有效期默认是三个月,若需要修改,增加一个参数,-validity,单位:天b)导出证书Linux下命令:keytool -export -trustcacerts -file /home/XXX/cas/key/mycas.crt -alias mycas -keystore /home/XXX/cas/key/mycas.keystorec)导入证书到客户端JDKLinux下命令:keytool -import -trustcacerts -keystore$JAVA_HOME/jre/lib/security/cacerts -file/home/XXX/cas/key/mycas.crt -alias mycas -storepass changeitwindows下命令:keytool -import -trustcacerts-keystore %JAVA_HOME\jre\lib\security\cacerts -fileD:\cas\key\mycas.crt -alias mycas -storepass changeitd)如果生成失败,请删除证书,重新导入删除证书文件cas/key下的两个文件后执行将证书从jdk中移除,移除JDK中的证书命令Linux下命令:keytool -delete -alias mycas -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeitwindow下命令:--移除JDK中的证书keytool -delete -alias mycas -keystore %JAVA_HOME\jre\lib\security\cacerts-storepass changeite)生成jssecacerts文件下载InstallCert.java这个java源文件网址:/code/snippet_12_4092在命令行中编译,然后执行java文件javac InstallCert.javajava InstallCert localhost:8080将生成的jssecacerts文件复制到$JAVA_HOME\jre\lib\security 目录下f)开启服务器端Tomcat的SSLg)重启电脑登陆测试服务器端,地址为https://localhost:8845/cas,登录用户名密码相同h)查看证书keytool -list -keystore/home/ligang/jdk1.6.0_26/jre/lib/security/cacerts -storepasschangeit4.修改CAS服务器配置,使其可以与项目结合a)进入解压出来的cas目录的WEB-INF下,b)将cas-server-3.4.12-release\modules下的cas-server-support-jdbc-3.4.12.jar和ojdbc6.jar复制到WEB-INF\lib下c)使用编辑工具打开deployerConfigContext.xmld)有三种登录配置,默认是SimpleTestUsernamePasswordAuthenticationHandler,用户名密码相同即可,QueryDatabaseAuthenticationHandler采用在配置文件中指定SQL语句的方式,SearchModeSearchDatabaseAuthenticationHandler是可以在类中写方法的方式。
SSO之CAS单点登录详细搭建
SSO之CAS单点登录详细搭建:环境说明:同一个机器上环境如下:操作系统:windows7 64位JDK版本:1.7.0_80web容器版本:apache-tomcat-7.0.70 64位服务端:cas-3.5.2.1.zip服务端现在地址:https:///apereo/cas/archive/v4.2.3.zip客户端:cas-client-3.3.3-release.zip客户端下载地址:/cas-clients/eclipse版本:eclipse-jee-luna-SR2-win32-x86_64.zip1、将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 127.0.0.1 127.0.0.1 解释: =>> 对应部署cas server的tomcat,这个虚拟域名还用于服务端证书生成 =>> 对应部署client1客户端应用的tomcat =>> 对应部署client2客户端应用的tomcat3、安全证书配置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特别注意:您的名字与姓氏是什么?该项一定要使用网站的域名,例如: ,Cas Client使用httpclient访问cas server的时候,会严格的检查证书。
CAS单点登录系列
小蚂蚁-CAS单点登录系列(1)-基础知识1.单点登录1.1.概述单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。
SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
1.2.技术实现机制当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket送到认证系统进行效验,检查ticket的合法性。
如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。
1.3.要实现SSO需要以下主要的功能所有应用系统共享一个身份认证系统;所有应用系统能够识别和提取ticket信息;应用系统能够识别已经登录过的用户,能自动判断当前用户是否登录过,从而完成单点登录的功能。
其中,统一的身份认证系统最重要,认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证;认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户。
另外,认证系统还应该对ticket进行效验,判断其有效性。
整个系统可以存在两个以上的认证服务器,这些服务器甚至可以是不同的产品。
认证服务器之间要通过标准的通讯协议,互相交换认证信息,就能完成更高级别的单点登录。
2.数字签名2.1.概念数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。
一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
2.2.主要功能保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。
数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。
cas单点登录系统:客户端(client)详细配置
cas单点登录系统:客户端(client)详细配置最近⼀直在研究cas登录中⼼这⼀块的应⽤,分享⼀下记录的⼀些笔记和⼼得。
后⾯会把cas-server端的配置和重构,另外还有这⼏天再搞nginx+cas的https反向代理配置,以及cas的证书相关的知识分享出来。
Cas由两部分组成,Cas Server和Cas Client。
Cas Server是Cas⾃⼰的服务端,⽽Cas Client是Cas客户端,往往客户端需要和我们具体的业务系统进⾏集成,这⾥我们主要详述cas 客户端的配置以及实例第⼀步:我们得有⼀个现成的web项⽬,然后我们要加⼊cas-client-core-xxx.jar到classpath;maven项⽬⽤这个:<dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>3.3.3</version></dependency>第⼆步:配置Filter我们需要在应⽤的web.xml⽂件中配置四个Filter,这四个Filter必须按照固定的顺序来进⾏配置,⽽且它们必须配置在应⽤的其它Filter之前。
它们的先后顺序要求如下:1、AuthenticationFilter2、TicketValidationFilter3、HttpServletRequestWrapperFilter4、AssertionThreadLocalFilter1.1、 配置AuthenticationFilter1.1.1、AuthenticationFilter有两个必须指定的参数:casServerLoginUrl⽤来指定Cas Server登录地址,serverName或service⽤来指定认证成功后需要跳转地址。
cas单点登录配置速成
cas单点登录配置速成服务端配置cas是个好东西,很灵活很好用,但是配置起来很麻烦,网上资料比较零碎。
不弄个三五天根本不知道其中的原理,终于在多天的奋斗中配置成功,现在将配置的一些过程记录下来供大家参考。
cas官方网站/cas下载最新的服务端CAS Server 3.3.3 Final解压后将modules下面的cas-server-webapp-3.3.3.war部署到web服务器,作为单点登录的服务器。
登录的服务器下面很多配置文件,通过配置可以做一些扩展。
修改点1:验证方式使用我们自己的用户表验证cas和当前已有的系统做集成的入口1.修改deployerConfigContext.xml文件添加数据源配置XML/HTML代码1.<bean id="casDataSource" class="mons.dbcp.BasicDataSource">2. <property name="driverClassName">3. <value>com.m ysql.jdbc.Driver</value>4. </property>5. <property name="url">6. <value>jdbc:m ysql://192.168.1.100/ires?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true</value>7. </property>8. <property name="username">9. <value>ires</value>10. </property>11. <property name="password">12. <value>i709394</value>13. </property>14.</bean>定义MD5的加密方式XML/HTML代码1.<bean id="passwordEncoder"2. class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">3. <constructor-arg value="MD5"/>4.</bean>配置authenticationManager下面的authenticationHandlers属性XML/HTML代码1.<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">2. <property nam e="dataSource" ref="casDataSource" />3. <property nam e="sql" value="select community_password from community_user_info where lower(community_user_munity_user) = lower(?)" />4. <property nam e="passwordEncoder" ref="passwordEncoder"/>5.</bean>修改点2:获取用户信息保存,方便各个客户端可以统一得到用户信息1.定义attributeRepository,通过jdbc查询用户的详细信息,可以把用户表或用户的所属组织机构或角色等查询出来。
CAS单点登录(五)——Service配置及管理
CAS单点登录(五)——Service配置及管理CAS单点登录(五)——Service配置及管理在上⼀节我们讲述了CAS中关于⾃定义认证登录策略,对CAS中关于⾃定义登录配置的⽅案,校验策略有了⼀定的了解,如果忘记了可以去复习⼀下——————CAS单点登录(四)——⾃定义认证登录策略。
这节本来该介绍⾃定义表单信息的知识,但是考虑到使⽤⾃定义表单知识涉及到Service配置⽅⾯的知识,所以这⼀节介绍⼀下在CAS中Service配置及管理。
⾸先我们要明⽩CAS中的Service的概念是什么,我们在第⼀节就讲解了在CAS系统中,主要分为三部分,User、Web应⽤、SSO认证中⼼。
User就是我们普通⽤户,Web应⽤就是需要接⼊SSO认证中⼼的应⽤也就是这⾥的Service,⽽SSO认证中⼼就是CAS服务端。
简单来说就是CAS分为服务端和客户端,⽽Service就是指具体的多个客户端(CAS Clients)。
⽽这⾥的服务管理(Service Management)就是CAS服务管理⼯具允许CAS服务器管理员声明和配置哪些服务(Service,CAS客户端)可以在哪些⽅⾯使⽤CAS。
服务管理⼯具的核⼼组件是服务注册表,它存储⼀个或多个注册服务。
接下来先介绍我们的第⼀个知识点——Service配置!⼀、Service配置我们刚刚提及到在CAS中,服务管理⼯具中的服务注册表当中存储着⼀个或多个注册服务,⽽这些Service中包含着各个⾏为的元数据,通过配置这些数据我们可以控制这些Service的⾏为。
主要⾏为包括⼀些⼏点:授权服务 - 控制哪些服务可以参与CAS SSO会话。
强制⾝份验证 - 为强制⾝份验证提供管理控制。
属性发布 - 为服务提供⽤户详细信息以进⾏授权和个性化。
代理控制 - 通过授予/拒绝代理⾝份验证功能进⼀步限制授权服务。
主题控制 - 定义⽤于特定服务的备⽤CAS主题。
在Service中配置属性主要包括以下这些信息:上图介绍了⼀些在Service中常⽤的配置项,对于各个配置属性的含义可以参考具体⽂档,服务配置。
CAS单点登陆配置
CAS服务端配置1.准备环境JDK1.6apache-tomcat-6.0.14cas-server-3.4.22.配置server将cas-server war文件复制到webapps下,启动tomcat,以相同用户名或密登录成功。
3.配置数据库访问方式复制modules下面所有jar文件到cas-server的Web-inf/lib下,并复制class12.jar(oracle 数据库驱动)。
修改配置数据源,在deployerConfigContext.xml中添加数据源。
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><propertyname="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property> <propertyname="url"><value>jdbc:oracle:thin:@localhost:1521:orcl</value></property><property name="username"><value>aip</value></property><property name="password"><value>aip</value></property></bean>修改登录验证方法,在deployerConfigContext.xml中注释原验证方式,改为数据库验证。
CAS单点登录(SSO)服务器配置
CAS单点登录(SSO)服务器配置一、单点登录的概念单点登录(SSO)英文全称Single Sign On,单点登录。
SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。
它是目前比较流行的企业业务整合的解决方案之一。
简单的 SSO 的体系中,会有下面三种角色: 1 、 User (多个) 2 、 Web 应用(多个) 3 、 SSO 认证中心(1 个)虽然 SSO 实现模式千奇百怪,但万变不离其宗:1) Web 应用不处理 User 的登录,否则就是多点登陆了,所有的登录都在 SSO 认证中心进行。
2) SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是谁。
3) SSO 认证中心和所有的Web 应用建立一种信任关系,SSO 认证中心对用户身份正确性的判断会通过某种方法告之Web 应用,而且判断结果必须被Web 应用信任。
二、单点登录原理当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket;用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据,应用系统接受到请求之后会把ticket 送到认证系统进行效验,检查ticket的合法性。
如果通过效验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。
CAS单点登录原理图:三、CAS 单点登录配置1.SSL配置先在CAS官方上下载cas server,解压后找到在modules文件夹中找到cas-server-webapp-3.4.11.war,将文件名更改为cas.war后置于tomcat应用目录下。
因为CAS的服务器验证需要通过SSL来完成,所以SSL对于CAS来说是必须的,SSL 的配置不是本文的重点,我们只是做简要的介绍。
