cas mysql_CAS单点登录之mysql数据库用户验证及常见问题

2023-05-16

前面已经介绍了CAS服务器的搭建,详情见:搭建CAS单点登录服务器。然而前面只是简单地介绍了服务器的搭建,其验证方式是原始的配置文件的方式,这显然不能满足日常的需求。下面介绍下通过mysql数据库认证的方式。

一、CAS认证之mysql数据库认证

1、在mysql中新建一个cas数据库并创建user表

CREATE DATABASE /*!32312 IF NOT EXISTS*/`cas` /*!40100 DEFAULT CHARACTER SET gbk*/;USE`cas`;/*Table structure for table `user`*/

DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (

`id`int(11) NOT NULLAUTO_INCREMENT,

`name`varchar(255) NOT NULL,

`password`varchar(255) NOT NULL,

`used`tinyint(2) NOT NULL,PRIMARY KEY(`id`)

) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;/*Data for the table `user`*/

insert into `user`(`id`,`name`,`password`,`used`) values (1,'casuser','9414f9301cdb492b4dcd83f8c711d8bb',1);

2、CAS的HTTP模式与HTTPS设置(可省略)

1)cas\WEB-INF\deployerConfigContext.xml,新增p:requireSecure="false"2)cas\WEB-INF\spring-configuration

ticketGrantingTicketCookieGenerator.xml设置p:cookieSecure="false"

warnCookieGenerator.xml设置p:cookieSecure="false"

http://localhost:8080/cas/login,进入登录页面。

默认用户为casuser/Mellon,登录成功即配置完成。

3、设置利用数据库来验证用户

依赖包:

c3p0-0.9.1.2.jar

mysql-connector-java-5.1.21.jar

cas-server-support-jdbc-4.0.0.jar

cas\WEB-INF\deployerConfigContext.xml

1)更换验证方式

class="com.mchange.v2.c3p0.ComboPooledDataSource"

p:driverClass="com.mysql.jdbc.Driver"

p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/cas?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"

p:user="root"

p:password="root" />

class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"

c:encodingAlgorithm="MD5"

p:characterEncoding="UTF-8" />

class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"

p:dataSource-ref="dataSource"

p:sql="select password from user where name=? and used=1"

p:passwordEncoder-ref="passwordEncoder"/>

2)更换验证Handle

http://localhost:8080/cas,进入登录页面。如果没有配置http登录,则需要通过http://localhost:8443/cas进行访问

默认用户为casuser/Mellon,登录成功即配置完成。

二、常见异常

1、证书路径不正确,由于证书未正常导入到jre\lib\security下,因此会出现以下异常。

十一月 09, 2015 4:00:31下午 org.jasig.cas.client.util.CommonUtils getResponseFromServer

严重: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)

at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)

at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)

at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)

at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1506)

at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)

at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)

at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)

at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)

at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)

at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)

at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)

at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)

at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)

at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1512)

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)

at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)

at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:311)

at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:291)

at org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:32)

at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:187)

at org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:164)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:102)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:65)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)

at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2522)

at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2511)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)

at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)

at sun.security.validator.Validator.validate(Validator.java:260)

at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)

at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)

at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)

at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1488)

...41more

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:146)

at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)

at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)

at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)

...47 more

2、客户端中web.xml的casServerUrlPrefix配置错误

java.lang.RuntimeException: java.io.FileNotFoundException: https://localhost:8443/serviceValidate?ticket=ST-1-1HUXO9iETnaNI2jbuvqK-cas01.example.org&service=http%3A%2F%2Flocalhost%3A8080%2FCasClient%2FIndex.jsp

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:328)

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:291)

org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:32)

org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:187)

org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:164)

org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:102)

root cause

java.io.FileNotFoundException: https://localhost:8443/serviceValidate?ticket=ST-1-1HUXO9iETnaNI2jbuvqK-cas01.example.org&service=http%3A%2F%2Flocalhost%3A8080%2FCasClient%2FIndex.jsp

sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1835)

sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)

sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:311)

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:291)

org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:32)

org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:187)

org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:164)

org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:102)

正确的应为:

13db0899c1825bf60332bd3efca13a9c.png

3、缺少数据库连接包

缺少cas-server-support-jdbc-4.0.0.jar、mysql-connector-java-5.1.21.jar、c3p0-0.9.1.2.jar包(在cas-server-4.0.0-release.zip下的modules目录可以找到)

2015-11-10 09:26:24,484 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] -

2015-11-10 09:26:24,812 ERROR [org.springframework.web.context.ContextLoader] - org.springframework.beans.factory.BeanCreationException: Error creating bean with name'centralAuthenticationService' defined in ServletContext resource [/WEB-INF/spring-configuration/applicationContext.xml]: Cannot resolve reference to bean 'authenticationManager' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'authenticationManager' defined in ServletContext resource [/WEB-INF/deployerConfigContext.xml]: Cannot resolve reference to bean 'dbAuthHandler' while setting constructor argument; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler] for bean with name 'dbAuthHandler' defined in ServletContext resource [/WEB-INF/deployerConfigContext.xml]; nested exception is java.lang.ClassNotFoundException: org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:326)

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)

at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:623)

at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1075)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:979)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)

at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)

at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)

at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)

at org.jasig.cas.web.init.SafeContextLoaderListener.contextInitialized(SafeContextLoaderListener.java:75)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5003)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5517)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)

at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)

at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1960)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:745)

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name'authenticationManager' defined in ServletContext resource [/WEB-INF/deployerConfigContext.xml]: Cannot resolve reference to bean 'dbAuthHandler' while setting constructor argument; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler] for bean with name 'dbAuthHandler' defined in ServletContext resource [/WEB-INF/deployerConfigContext.xml]; nested exception is java.lang.ClassNotFoundException: org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:326)

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:107)

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveManagedMap(BeanDefinitionValueResolver.java:375)

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:162)

at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:637)

at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:148)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1075)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:979)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)

at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:320)

...31 more

4、由于创建证书的域名(创建证书时的名字与姓氏)和在应用中配置的cas服务域名不一致导致

java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching sso.castest.com found

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:328)

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:291)

org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:32)

org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:187)

org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:164)

org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:102)

root cause

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching sso.castest.com found

sun.security.ssl.Alerts.getSSLException(Alerts.java:192)

sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)

sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)

sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)

sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1506)

sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)

sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)

sun.security.ssl.Handshaker.process_record(Handshaker.java:914)

sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)

sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)

sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)

sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)

sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)

sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)

sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1512)

sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)

sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:311)

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:291)

org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:32)

org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:187)

org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:164)

org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:102)

root cause

java.security.cert.CertificateException: No name matching sso.castest.com found

sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:221)

sun.security.util.HostnameChecker.match(HostnameChecker.java:95)

sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455)

sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436)

sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:200)

sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)

sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1488)

sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)

sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)

sun.security.ssl.Handshaker.process_record(Handshaker.java:914)

sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)

sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)

sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)

sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)

sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)

sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)

sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1512)

sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)

sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:311)

org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:291)

org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:32)

org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:187)

org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:164)

org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:102)

三、参考文献

http://ykt.wh.sdu.edu.cn/desktop/doc/introduction.html

http://steven-wiki.readthedocs.org/en/latest/security/cas-tomcat/

http://blog.csdn.net/frinder/article/details/7969925

mysql配置:

http://steven-wiki.readthedocs.org/en/latest/security/cas-tomcat/

http://www.cnblogs.com/chenyongjun/p/4770107.html

使用 CAS 在 Tomcat 中实现单点登录:

http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cas mysql_CAS单点登录之mysql数据库用户验证及常见问题 的相关文章

随机推荐

  • cas 配置mysql_CAS mysql linux安装与配置

    一 CAS在linux中的安装与配置 一 首先将 root cas 下的 page文件夹删除 只留以下两个 二 创建cas 文件夹 并将root 下的tomcat压缩包 和 cas war 复制进去 root 64 hostname cd
  • 技术系统进化法则包括_TRIZ理论八大技术系统进化法则.doc

    机械创新设计课程论文 TIZE理论的八大技术系统进化法则 专 业 班 级 学 号 姓 名 成 绩 教 师 2013年 5月 23日 TRIZ理论的八大技术系统进化法则 姚巧珍 10机自职1班 xff0c 学号 xff1a 101011312
  • oracle数据库安装配置错误,Oracle数据库配置错误信息解决方法(转)

    Oracle客户端网络配置 xff1a l 在Oralce产品安装完成后 xff0c 为了与数据库服务器进行连接或者是两台数据库之间进行数据复制 xff0c 则必须进行网络连接配置 l Oracle9i Net Service配置方法 xf
  • Smart3D三维建模操作笔记

    基本步骤都有 xff0c 写的很乱 xff0c 待整理 软件教程视频 xff1a https www iqiyi com v 19rxtdw1lo html 许可只能用一次 Master 三维建模软件 xff0c 主从工作模式 xff1a
  • 超详细的CentOS下载与图文安装

    一 CentOS7 4下载 官网下载页面地址 xff1a Index of 如果觉得下载比较繁琐 xff0c 我已经提供了CentOS7 4的安装包 链接 xff1a https pan baidu com s 1cRgNfZ5REf4LQ
  • Linux控制台命令结果返回,bash的命令执行状态返回值及命令行展开详解

    命令执行状态返回值及命令行展开是bash的2个基本特性 xff0c 其详细特点及应用如下 xff1a 一 命令执行的状态结果 xff1a bash通过状态返回值来输出此结果 成功 xff1a 0 失败 xff1a 1 255 命令执行完成之
  • rtos和linux在内存管理上,freertos与linux区别

    freeRTOS是一个实时操作系统 xff0c 主要实现了任务调度 内存管理 IPC 中断管理这几个模块 xff0c 它要求快速的处理任务 xff0c gui 驱动框架 shell 这些都不是它的核心功能 xff0c 而且大部分情况下都不会
  • 如何远程连接MySQL数据库

    新安装的 MySQL 只有一个 root 用户 xff0c 默认不开启远程连接 下面以 Ubuntu 系统下的 MySQL 为例 xff0c 说明如何远程连接 MySQL 数据库 登录 root 用户 mysql uroot pyongdu
  • linux重启时无法关机,linux系统无法关机/重启

    机器型号 xff1a 戴尔380 系统 xff1a Linux操作系统 使用图形界面启动后 xff0c 在开始菜单里 xff0d 关机 xff0c 显示器 鼠标 键盘瞬间断电 xff0c 但是主机保持原状 xff0c 当ssh远程可以登录该
  • 卫星导航算法 --geo 库函数的学习

    博主自己在看px4源码时 xff0c 发现geo的好多库函数挺有意思的 xff0c 于是将其进行总结学习 库函数 xff1a 1 int map projection global reproject float x float y dou
  • pixhawk 源码分析-SPI驱动-MS5611

    最近学习了一下SPI的驱动软件 xff0c 在此将其进行总结 本文使用的代码为pixhawk 1 5 5版本的源码 源码下载地址 第一步函数入口 xff1a 老规矩 xff0c 所有px4的代码的函数入口都是在启动脚本中 xff0c 启动脚
  • ucosii内核总结

    博主最近一直在看有关ucosii的代码 xff0c 并将其成功移植到了正点原子STM32F103的开发板上 颇有一些收获 xff0c 于是将其总结下来与大家一起分享 本文不会向你介绍怎么移植ucos xff08 在STM32上移植ucos的
  • python 语法糖_python中有哪些语法糖?

    在对待解题思路的时候 xff0c 往往会有多种方法实现最后的结果 只不过有一种是我们所说的常见用法 xff0c 另一类是在这种特性条件下 xff0c 另辟蹊径产生的解决方法 xff0c 语法糖可以说和这种理念是一样的 xff0c 为了简便
  • VDO、RAID、LVM

    VDO RAID LVM实验记录 VDORAIDRAID10实验RAID5实验 LVM创建逻辑卷扩容逻辑卷缩小逻辑卷逻辑卷快照删除逻辑卷 VDO 使用vdo 虚拟数据优化 目的节省空间 实验为创建挂载的操作 虚拟机中新添加一块SATA硬盘
  • 使用Android手机控制树莓派操作流程

    使用Android手机控制树莓派操作流程 二次排版请看此连接 xff1a 详细请看二次排版 xff0c 有图有真相直达 xff1a 如果你觉得用计算机来控制树莓派不太方便 xff0c 要求路由器网线等比较多 xff0c 那么今天我就简单的说
  • 一次可编程的非易失性存储器(OTP NVM)工作原理、eFuse模块解析

    关于eFuse模块解析 一次可编程的非易失性存储器 xff08 OTP NVM xff09 解析 1 基本概况及介绍1 1 相关简介1 2 关于eFuse工作原理 2 应用功能总结3 关于eFuse解析3 1 基本介绍3 2 相关信号3 3
  • 滤波器原理及其作用计算机网络,滤波器的原理与作用

    目录1 基本原理 2 滤波的概念 3 主要参数 4 作用 5 使用 滤波器是什么 滤波器是对波进行过滤的器件 xff0c 一般有两个端口 xff0c 一个输入信号 一个输出信号 可以说它是重要的电子元器件 xff0c 滤波器把电源功率传输到
  • python isdigit用法中0_Python string isdigit()用法及代码示例

    在Python中 xff0c isdigit 是用于字符串处理的内置方法 如果字符串中的所有字符均为数字 xff0c 则isdigit 方法返回 True xff0c 否则 xff0c 返回 False 此函数用于检查参数是否包含数字 xf
  • C语言错误r6002,奇怪的C语言浮点数问题

    奇怪的C语言浮点数问题 奇怪的C语言浮点数问题 如下的程序用VC6 0编译运行 debug时报运行时错误 release时出现 runtime error R6002 floating point not loaded 奇怪极了 同样的程序
  • cas mysql_CAS单点登录之mysql数据库用户验证及常见问题

    前面已经介绍了CAS服务器的搭建 xff0c 详情见 xff1a 搭建CAS单点登录服务器 然而前面只是简单地介绍了服务器的搭建 xff0c 其验证方式是原始的配置文件的方式 xff0c 这显然不能满足日常的需求 下面介绍下通过mysql数