`
jayghost
  • 浏览: 446374 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Tomcat中部署CAS

    博客分类:
  • Java
 
阅读更多

先部署CAS服务端

 

1.部署CAS服务器的WAR包

将cas-server-3.4.11-release.zip解压缩,把modules文件夹中的cas-server-webapp-3.4.11.war

文件拷贝到<TOMCAT_HOME>/webapps/下,改名为cas(这里的名字只是一种习惯,当然可以改成其他或不改),然后启动服务器,其会自动解压。

 

2. 修改CAS登录的用户库

CAS的默认设置是只要用户名和密码相同,即可进行登录成功,真正的系统用户名和密码相同的可能性极小,所以我们需要修改默认的设置。

主要的修改在deployerConfigContext.xml文件里

位置:<TOMCAT_HOME>/webapps/cas/WEB-INF。

 

首先找到

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

 

注释该行,加入下面的bean,这里bean的class属性用到的是CAS服务器端封装的JDBC包cas-server-jdbc-3.0.5.jar里的QueryDatabaseAuthenticationHandler方法,所以要将此包拷贝到/WEB-INF下的lib中。(还需要将mysql-connector-java-5.1.14-bin.jar放到/WEB-INF下的lib中)

这里sql属性是从clientuser表中根据cas登陆名查找密码。

dataSource属性需要再添加一个bean,如下:

 

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
	<property name="sql" value="select password from clientuser where username=?" />
	<property name="dataSource">
		<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://localhost:3306/sso</value>
			</property>
			<property name="username">
				<value>root</value>
			</property>
			<property name="password">
				<value>wschool</value>
			</property>
		</bean>
	</property>
</bean>
 

http://developer.jasig.org/repo/content/repositories/m1/cas/jars/找到cas-server-jdbc-3.0.5.jar下载。

 

cas-server-jdbc-3.0.5.jar 包中,提供了 3 个基于 JDBC 的 AuthenticationHandler,分别为 BindModeSearchDatabaseAuthenticationHandler, QueryDatabaseAuthenticationHandler, SearchModeSearchDatabaseAuthenticationHandler。其中 BindModeSearchDatabaseAuthenticationHandler 是用所给的用户名和密码去建立数据库连接,根据连接建立是否成功来判断验证成功与否;QueryDatabaseAuthenticationHandler 通过配置一个 SQL 语句查出密码,与所给密码匹配;SearchModeSearchDatabaseAuthenticationHandler 通过配置存放用户验证信息的表、用户名字段和密码字段,构造查询语句来验证。使用哪个 AuthenticationHandler,需要在 deployerConfigContext.xml 中设置,默认情况下,CAS 使用一个简单的 username=password 的 AuthenticationHandler.

 

 

3.访问https://localhost:8443/cas-server-webapp-3.4.11/

 

 

然后换一台机子,可以是虚拟机,部署一个Web项目,集成CAS客户端

参考http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html

http://my.oschina.net/liferay/blog/5805

 

1.创建一个WEB项目CasClient1,然后把casclient.jar包导入到lib中去,我这里用的是2.1.0的版本,不是3.2.1的版本。

 

2.修改 web.xml 文件:

 

<servlet>
	<servlet-name>Test</servlet-name>
	<servlet-class>com.wujay.Test</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>Test</servlet-name>
	<url-pattern>/servlet/Test</url-pattern>
</servlet-mapping>
<filter>
	<filter-name>CASFilter</filter-name>
	<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
	<init-param>
		<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
		<!--这里的server是服务端的IP-->
		<param-value>https://wujay-PC:8443/cas_server/login</param-value>
	</init-param>
	<init-param>
		<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
		<!--这里的serName是服务端的主机名,而且必须是-->
		<param-value>
               https://wujay-PC:8443/cas_server/serviceValidate
           </param-value>
	</init-param>
	<init-param>
		<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
		<!--client:port就是需要CAS需要拦截的地址和端口,一般就是客户机这个TOMCAT所启动的IP和port-->
		<param-value>localhost:8080</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>CASFilter</filter-name>
	<!--
		这个是我自己加的一个servlet,当访问这个页面时,就弹到https://wujay-PC:8443/cas/login
		这个就是服务器配置的路径
	-->
	<url-pattern>/servlet/Test</url-pattern>
</filter-mapping>

 创建com.wujay.Test.java:

 

public class Test extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
	    PrintWriter out = response.getWriter();
	    out.println("<html>");
	    out.println("<head>");
	    out.println("<title>Welcome to casTest2 sample System!</title>");
	    out.println("</head>");
	    out.println("<body>");
	    out.println("<h1>Welcome to casTest1 sample System!</h1>");
	    CASFilterRequestWrapper  reqWrapper=new CASFilterRequestWrapper(request);
	    out.println("<p>The logon user:" + reqWrapper.getRemoteUser() + "</p>");
	    HttpSession session=request.getSession();
	    out.println("<p>The logon user:" + 
	                   session.getAttribute(CASFilter.CAS_FILTER_USER)  + "</p>");
	    out.println("<p>The logon user:" + 
	         session.getAttribute("edu.yale.its.tp.cas.client.filter.user") + "</p>");
	    out.println("</body>");
	    out.println("</html>");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

 3.在客户端访问http://localhost:8080/CasClient1/servlet/Test,第一次会跳转到cas服务器端进行用户名和密码的输入,以后就不用输入密码了。

 

 

问题汇总:

 

 严重: edu.yale.its.tp.cas.client.CASAuthenticationException: Unable to validate ProxyTicketValidator [[edu.yale.its.tp.cas.client.ProxyTicketValidator prox

yList=[null] [edu.yale.its.tp.cas.client.ServiceTicketValidator casValidateUrl=[https://192.168.1.111:8443/cas/proxyValidate] ticket=[ST-0-9h7Mx5HK3pfsdxRv

MD3y] service=[http%3A%2F%2F192.168.1.222%3A8080%2Fservlets-examples%2Fservlet%2FHelloWorldExample] renew=false]]]

这个CAS异常是从CAS Client里面抛出,是当我们不使用证书的CN去访问域名的时候(比如下文是用IP访问而且证书的CN是该IP对应的域名而非该IP),CASClient无法信任,也就是我上面特意提到的那个CN的问题。要特别注意。我这里的CN=wujay-PC 

 

INFO [org.jasig.cas.authentication.AuthenticationManager

Impl] - <AuthenticationHandler: cn.com.tiansky.cas.authenticationHandlers.UPAuthenticationHandler successfully authenticated the user which provided the followi

ng credentials: [username: test]>

就种错误,可能是客户端的那个配置文件里写的不太对。也就是上面说的第五步,要多注意一下。 

 

java.io.IOException: Cannot recover key

        at org.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(JSSE14Socket

Factory.java:125)

        at org.apache.tomcat.util.net.jsse.JSSESocketFactory.createSocket(JSSESo

cketFactory.java:88)

        at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoi

nt.java:292)

        at org.apache.coyote.http11.Http11BaseProtocol.init(Http11BaseProtocol.j

ava:138)

        at org.apache.catalina.connector.Connector.initialize(Connector.java:101

 

这种错误,可能是你生成的证书有问题,如果keypass和storepass的密码不一致也会把这个错(不知为什么非要设成一样的)

分享到:
评论

相关推荐

    基于Tomcat6的CAS SSO配置

    当用户试图访问受保护的资源时,CAS Client(部署在客户端应用中)会检查请求中是否存在Service Ticket。如果没有,它会将用户重定向到CAS Server进行登录。用户成功登录后,CAS Server会生成一个Service Ticket并...

    使用CAS在Tomcat中实现单点登录参考代码及配置

    - **配置CASServer**:首先需要在Tomcat环境中部署CASServer。这通常涉及配置服务器的相关参数,比如数据库连接、安全设置等。 - **配置CASClient**:为了使Web应用能够与CASServer进行交互,需要在应用中添加CAS...

    CAS实现单点登录.pdf

    为了在Tomcat中部署CAS Server,需要进行以下步骤: 1. 准备工作:确保Tomcat版本兼容,并且服务器支持SSL。 2. 配置SSL:Tomcat的SSL配置涉及到keystore和truststore的设置,以支持HTTPS协议。 3. 下载CAS Server...

    openjdk11+tomcat9+CASServer.zip

    在这个"openjdk11+tomcat9+CASServer.zip"压缩包中,包含了搭建CAS Server 6.3系列所需的基础软件组件,主要涉及三个关键技术:OpenJDK 11、Tomcat 9和CAS Server。 **OpenJDK 11**: OpenJDK是Java Development Kit...

    casServer+tomcat

    4. **部署CasServer**:将CasServer的WAR文件放入Tomcat的`webapps`目录下,Tomcat会自动解压并启动CasServer的服务。 5. **测试与调试**:启动Tomcat后,访问CasServer的默认URL(通常是`...

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

    部署CAS Server的步骤包括: 1. 配置Tomcat使用HTTPS,这涉及到生成SSL证书和修改Tomcat的`server.xml`配置文件。 2. 将下载的CAS Server应用包解压并复制到Tomcat的`webapps`目录下。 3. 配置CAS Server的配置文件...

    lifery6.1+cas初始化环境搭建及门户解决方案

    在Tomcat中部署CAS Server之前,需要进行必要的配置,包括设置端口、调整JVM参数等。 **2.4.5 启动Cas认证服务器** 启动Cas认证服务器通常只需运行Tomcat的`startup.sh`或`startup.bat`脚本。 **2.4.6 配置cas...

    CAS 框架 SSO的实现.pdf

    - 在Tomcat中部署CASServer和CASClient。 - 配置CASServer,包括数据库连接信息、认证策略等。 - 配置CASClient,确保能够正确地重定向至CASServer进行认证。 #### 四、结合实际的环境的扩展 - **多个Web应用...

    使用 CAS 在 Tomcat6 中实现单点登录

    【部署CAS Server】部署CAS Server需要: 1. 使用兼容Servlet 2.3的Web服务器,例如Tomcat 6.0。 2. 下载并安装CAS Server和Client。 3. 配置Tomcat支持HTTPS,包括生成SSL证书,建议使用主机名或域名而非IP地址。 4...

    myeclipse、tomcat集成CAS

    在“tomcat集成CAS.doc”文档中,应该详细介绍了在Tomcat服务器上配置和部署CAS客户端的步骤,包括添加CAS服务器的信任证书、配置服务器的context.xml以支持HTTPS以及调整CAS客户端的配置文件。通过阅读这份文档,你...

    cas-server-webapp-tomcat-5.3.16.war

    cas-server-webapp-tomcat-5.3.16.war maven依赖包

    cas tomcat整合单点登录demo

    2. **配置CAS Client**:在每个需要SSO功能的Tomcat应用中,部署CAS客户端组件,如`cas-server-support-spring-boot-starter`。这通常涉及修改应用的`web.xml`或使用Spring Boot的配置来配置客户端的URL、服务验证...

    tomcat + cas

    1. **配置CAS服务端**:在Tomcat服务端安装并配置CAS服务器,包括设置CAS服务器的URL、部署CAS服务器的应用上下文等。 2. **配置CAS客户端**:在每个客户端Tomcat应用中,配置CasClientFilter,设置服务端的地址...

    Yale CAS Server的部署及cas-java-client 3.2的应用

    6. **部署CAS Server**:将修改后的CAS Server应用打包成WAR文件,然后将其放入Tomcat的`webapps`目录下,启动服务器,CAS Server即被部署成功。 接下来,我们转向cas-java-client 3.2的使用。这是一个Java客户端库...

    在Tomcat中使用Yale CAS实现单点登陆(SSO)

    为了在Tomcat中实现客户端的配置,需要将CAS客户端的库(通常是一个jar文件)添加到Web应用的类路径中,并在Web应用的web.xml文件中配置过滤器和监听器,以处理与CAS服务器的交互。过滤器将检查请求,如果用户未认证...

    CAS服务器部署

    3. **Web服务器**:如Apache Tomcat,用于部署CAS服务端应用。 4. **数据库**:可选,用于存储认证信息,如MySQL、Oracle等。 ### 三、CAS服务器下载与解压 从官方网站或者其他可靠源下载CAS服务器的最新稳定版本,...

    tomcat cas 单点登陆

    - **部署CAS.war文件**:将CAS服务部署到Tomcat中。 - 解压`cas-server-3.0.6.zip`包,将其中的`cas.war`文件复制到Tomcat的`webapps`目录下。 ##### 4. 配置Tomcat - **启用HTTPS**:编辑Tomcat的`conf/server....

    构建cas的war部署包(cas-overlay)(cas-server-webapp)(4.2.7)

    【构建CAS的WAR部署包(CAS-Overlay)(cas-server-webapp)(4.2.7)】是一个关于在Java环境中部署中央认证服务(Central Authentication Service,简称CAS)的重要过程。CAS是一个开源的身份验证框架,广泛用于实现单...

    CAS部署说明

    在部署CAS时,Tomcat将作为服务器端运行CAS服务。 然后,我们安装CASSVN的Server部分。在该目录下,有两个不同版本的文件,选择任意一个解压缩。在解压后的`modules`目录下,你会找到一个名为`cas-server-webapp-...

    使用CAS整合CXF实现单点登录部署步骤

    首先,我们需要在Tomcat服务器上部署CAS项目。这通常涉及以下步骤: 1. **下载CAS服务器**:从官方Git仓库或Maven仓库获取最新的CAS服务器源码或二进制包。 2. **配置CAS服务器**:修改`cas-server-config....

Global site tag (gtag.js) - Google Analytics