SSO之CAS单点登录详细搭建教程

第一:编辑文件 C:\Windows\System32\drivers\etc\hosts 在文件末端添加下面三条信息:

        127.0.0.1 server.zhoubang85.com

        127.0.0.1 client1.zhoubang85.com

        127.0.0.1 client2.zhoubang85.com

第二:在tomcat的根目录下,分别建立三个目录,即server、clent1、clent2

              在三个目录下,分别都建立一个ROOT(ROOT是tomcat的主默认主页目录)文件夹。

              将cas-server.xx.war解压后散放到/tomcat/server/ROOT目录下

CAS默认需要tomcat配置SSL协议,使用https协议通信的。 由于项目是企事业单位内部的系统,不需要这么高的安全级别, 可以简化操作,不走SSL协议。修改下配置文件\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml, 如下, 将默认的true改成false即可。

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

第三:修改tomcat配置文件,通过添加一个host节点把域名server.zhoubang85.com绑定到server里面的项目里面

name="server.zhoubang85.com"  appBase="server"
      unpackWARs="true" autoDeploy="true">

  
  

  
  className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="localhost_access_log." suffix=".txt"
         pattern="%h %l %u %t "%r" %s %b" />

第四步:先测试服务器是否可以正常使用

 启动tomcat,在地址栏输入:

 http://www.server.com:8080

登录,默认用户名与密码server的web-inf目录下的deployerConfigContext.xml里面可以看到

SSO之CAS单点登录详细搭建教程_第1张图片

casuser为账号   Mellon为密码

保证在单个服务器上登录可以登录成功

用户名和密码肯定需要和数据库进行交互验证的,,那么,如何配置呢?

【说明】:我本地使用的是mysql数据库。

1、,需要将几个jar文件,放到CAS服务的lib目录下,我本地使用的jar版本分别是c3p0-0.9.1.2.jarcas-server-support-jdbc-4.0.0.jarmysql-connector-java-5.1.13-bin.jar,这3个缺一不可。将这3jar放到apache-tomcat-7.0.79\server\ROOT\WEB-INF\lib目录下。

2、修改配置,支持mysql数据库交互验证

编辑apache-tomcat-7.0.79\server\ROOT\WEB-INF\deployerConfigContext.xml文件,你会看到有这样一段配置:

SSO之CAS单点登录详细搭建教程_第2张图片

注释掉第二个entry配置

然后再在这个xml中新加入2bean配置,如下:


id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    name="driverClass" value="com.mysql.jdbc.Driver" />
    name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&characterEncoding=UTF-8"/>
    name="user" value="root" />
    name="password" value="123456"/>


id="dbAuthHandler"
      class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"
      p:dataSource-ref="dataSource"
      p:sql="SELECT u.`password` FROM `usertable` u WHERE u.`userName` = ?" />

3、修改WEB-INF\spring-configuration\applicationContext.xml

将文件中的beansnames属性改为如下:

[html]  view plain  copy
  1. <util:list id="basenames">  
  2.       <value>classpath:custom_messagesvalue>  
  3.       <value>classpath:messages_zh_CNvalue>  
  4.   util:list>  

将国际化配置文件切换为汉语

至此,CAS与数据库交互验证的配置已经配置完成,你可以重新访问cas,输入数据库中存在的用户名和密码,来看看效果如何~如果登录成功,说明配置无误。

第五步:实现客户端1,

1.新建一个web项目,通过maven添加两个客户端的依赖包



  org.jasig.cas
  cas-client-core
  3.1.10



  commons-logging
  commons-logging
  1.1.3

2.编辑web.xml

xml version="1.0" encoding="UTF-8"?>
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">
  Archetype Created Web Application

  
  
    org.jasig.cas.client.session.SingleSignOutHttpSessionListener
  
  
  
    CAS Single Sign Out Filter
    org.jasig.cas.client.session.SingleSignOutFilter
  
  
    CAS Single Sign Out Filter
    /*
  
  
    CAS Filter
    org.jasig.cas.client.authentication.AuthenticationFilter
    
      casServerLoginUrl
      http://server.zhoubang85.com:8080/login
    
    
      serverName
      http://client1.zhoubang85.com:8080
    
  

  
    CAS Filter
    /*
  

  
  
    CAS Validation Filter
    
      org.jasig.cas.client.validation.Cas10TicketValidationFilter
    
      casServerUrlPrefix
      http://server.zhoubang85.com:8080
    
    
      serverName
      http://client1.zhoubang85.com:8080
    
  
  
    CAS Validation Filter
    /*
  
  
  
    CAS HttpServletRequest Wrapper Filter
    org.jasig.cas.client.util.HttpServletRequestWrapperFilter
  
  
    CAS HttpServletRequest Wrapper Filter
    /*
  
  
  
    CAS Assertion Thread Local Filter
    org.jasig.cas.client.util.AssertionThreadLocalFilter
  
  
    CAS Assertion Thread Local Filter
    /*
  

打包部署到tomcat的clent1目录下的ROOT里面,修改tomcat配置文件绑定到client1.zhoubang85.com域名

name="client1.zhoubang85.com"  appBase="client1"
      unpackWARs="true" autoDeploy="true">

  
  

  
  className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="localhost_access_log." suffix=".txt"
         pattern="%h %l %u %t "%r" %s %b" />

配置完成后,启动CAS服务端tomcat,在浏览器访问:

http://client1.zhoubang85.com:8080 看看是否跳转到了CAS认证界面

认证观察会发现浏览器的地址栏中(我用的是火狐浏览器),URL信息是这样的:

https://server.zhoubang85.com:8080/login?service=http%3A%2F%2Fclient1.zhoubang85.com%3A18080%2Fexamples%2Fservlets%2Fservlet%2FHelloWorldExample

我想你已经知道什么意思了,由于你没有登录CAS认证系统,CAS认证系统拦截到你访问的客户端应用,首先进入到认证系统登录界面,同时URL后面加上你想访问的地址信息,当你登录成功后,CAS服务会转向到你刚刚访问的地址,也就是http://client1.zhoubang85.com:8080

转向到这个地址

SSO之CAS单点登录详细搭建教程_第3张图片

第五步:实现客户端2

和第一个客户端一致,不一样的地方是web.xml里面的客户端地址改成客户端2部署的地址

xml version="1.0" encoding="UTF-8"?>
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">
Archetype Created Web Application



  org.jasig.cas.client.session.SingleSignOutHttpSessionListener



  CAS Single Sign Out Filter
  org.jasig.cas.client.session.SingleSignOutFilter


  CAS Single Sign Out Filter
  /*


  CAS Filter
  org.jasig.cas.client.authentication.AuthenticationFilter
  
    casServerLoginUrl
    http://server.zhoubang85.com:8080/login
  
  
    serverName
    http://client2.zhoubang85.com:8080
  



  CAS Filter
  /*




  CAS Validation Filter
  
    org.jasig.cas.client.validation.Cas10TicketValidationFilter
  
    casServerUrlPrefix
    http://server.zhoubang85.com:8080
  
  
    serverName
    http://client2.zhoubang85.com:8080
  


  CAS Validation Filter
  /*



  CAS HttpServletRequest Wrapper Filter
  org.jasig.cas.client.util.HttpServletRequestWrapperFilter


  CAS HttpServletRequest Wrapper Filter
  /*



  CAS Assertion Thread Local Filter
  org.jasig.cas.client.util.AssertionThreadLocalFilter


  CAS Assertion Thread Local Filter
  /*

打包部署到tomcat的clent2目录下的ROOT里面,修改tomcat配置文件绑定到client2.zhoubang85.com域名

配置完成后,启动CAS服务端tomcat,在浏览器访问:

http://client2.zhoubang85.com:8080 看看是否跳转到了CAS认证界面

第六步: 基本的测试
访问客户端1—-> 跳转到cas server 验证 —-> 显示客户端1的应用 —->新开选项卡访问客户端2 —->显示客户端2应用 —-> 注销cas server —-> 打开客户端1/客户端2 —-> 重新跳转到cas server 验证

你可能感兴趣的:(java)