CAS单点登录

来源:互联网 发布:js延时函数sleep 编辑:程序博客网 时间:2024/05/16 05:20

最近有兴趣搭建了一下CAS SSO单点登录环境。


cas服务端:cas-server-3.3.3-release.zip 下载地址:http://downloads.jasig.org/cas/cas-server-3.3.3-release.zip
cas客户端:cas-client-3.1.8-release.zip 下载地址:http://downloads.jasig.org/cas-clients/cas-client-3.1.8-release.zip
cas java客户端:cas-client-2.0.11.zip 下载地址:http://downloads.jasig.org/cas-clients/cas-client-2.0.11.zip

一、服务端的配置。

首先我先开始按照网上的教程配置https验证,

http://www.kafeitu.me/sso/2010/11/05/sso-cas-full-course.html

带有域名的验证始终不成功,我所以就取消的https验证。

CAS取消https验证。先把cas-server-3.3.3-release.zip解压 modules文件夹下找到 cas-server-webapp-3.3.3.war 放到一个tomcat下,启动tomcat,将自动解压缩war包,将项目文件夹名改为cas。

服务器端:

1.找到cas-servlet.xml,将 p:cookieSecure="true"改为 p:cookieSecure="false" 如下:

<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"        p:cookieSecure="false"        p:cookieMaxAge="-1"        p:cookieName="CASTGC"        p:cookiePath="/cas" />

2.找到cas-servlet.xml,将 p:cookieSecure="改为 p:cookieSecure="false",改完如下:

<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"        p:cookieSecure="false"        p:cookieMaxAge="-1"        p:cookieName="CASPRIVACY"        p:cookiePath="/cas" />

3.找到deployerConfigContext.xml,在文件中找到“HttpBasedServiceCredentialsAuthenticationHandlerbean,然后添加:p:requireSecure="false",改完如下:

<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"                    p:httpClient-ref="httpClient" p:requireSecure="false" />

Tomcat可以不添加8443端口。

启动tomcat,用浏览器浏览 http://locahost:8080/cas。

出现


输入用户名:admin,密码:admin ,如果出现成功界面,说明cas服务器搭建成功,默认是用户名密码相同就是就登录成功。当然这只是简单验证,怎么进行数据库数据验证呢。

请参看上面的链接,讲的比较详细。记得往cas的lib里面添加相应的jdbc jar包 和cas-server-support-jdbc.jar。


二.客户端

把casclient.jar复制到工程TestPro  /WEB-INF/lib下面。

web.xml的配置

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><filter>    <filter-name>CAS Filter</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>      <param-value>http://localhost:8080/cas/login</param-value>    </init-param>    <init-param><param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name><param-value>http://localhost:8080/cas/serviceValidate</param-value>    </init-param>    <init-param><param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name><param-value>10.11.68.54:8080</param-value></init-param></filter><filter-mapping>    <filter-name>CAS Filter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping><servlet><servlet-name>welcome</servlet-name><servlet-class>welcome.WelcomePage</servlet-class></servlet><servlet-mapping><servlet-name>welcome</servlet-name><url-pattern>/WelcomePage</url-pattern></servlet-mapping></web-app>
在src下面 welcome包里面WelcomePage.java

package welcome;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import edu.yale.its.tp.cas.client.filter.CASFilter;import edu.yale.its.tp.cas.client.filter.CASFilterRequestWrapper;public class WelcomePage extends HttpServlet {/** *  */private static final long serialVersionUID = 6604894282088992512L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {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>");}}
然后启动tomcat,在浏览中输入

http://localhost:8080/testPro/WelcomePage

你可以可以观看整个流程。

总结:该流程主要是非https验证的,个人感觉这么比较方便,https验证出了些问题,没有解决,主要是用域名输入显示不了,用localhost能显示,而我在系统hosts文件中已经加入了域名,并且多次尝试了证书认证还是不行。所以纠结了很久。






原创粉丝点击