开源的单点登录系统CAS入门

单点登录

单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.
当一个系统中存在诸多子系统,而这些子系统又是分布在不同的服务器中,那么使用传统的session是无法解决的,这就需要使用相关的单点登录技术来解决

CAS

CAS是Yale大学发起的一个开源项目,只在为文本应用系统给提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

  • 开源的企业级单点登录解决方案
  • CAS Service 是需要独立部署的web应用
  • CAS Client 支持非常多的客户端(这里是指 单点登录系统中各个web应用),包括JAVA,.Net,PHP等

CAS,它主要分为两个部分,一个是CAS client(简称为client),和一个CAS Servier(简称为service).service需要独立的进行部署,负责对用户的认证工作.而client则负责处理对客户端发送过来的访问请求,需要登录时会重定向到service.
这个是CAS大致的协议过程

#### CAS服务端的部署

先下载一个CAS的资源包,把它解压开.找到它的war包.我的解压开之后在
E:\cas-server-4.0.0-release\cas-server-4.0.0\modules
目录下面找到
cas-server-webapp-4.0.0.war
将它改名为cas.war放在一个Tomcat的webAPP目录下面,启动Tomcat之后你可以在浏览器中输入localhost:8080/cas就能够看到下面的页面

但是我们经常要使用Tomcat不可能一直让它占用这个端口,所以我们需要修改一下端口号
打开Tomcat下面的conf/server.xml找到下面的代码

 

8080这个端口修改一下,我这里修改为9100
同时也要修改cas的配置文件
打开cas/WEB-INF/cas.properties

server.name=http://localhost:8080(修改为9100)

顺便去除掉HTTPS认证,这个认证是需要money的,

  • 修改cas/WEB-INF/deployerConfigContext.xml找到下面的配置

    p:cookieSecure="true"
    p:cookieMaxAge="-1"
    p:cookieName="CASTGC"
    p:cookiePath="/cas" />

这里需要增加参数p:requireSecure=”false”,requireSecure属性意思为是否需要安全验证,即HTTPS,false为不采用

  • 修改cas的/WEB-INF/springconfigurationticketGrantingTicketCookieGenerator.xml

p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />

参数p:cookieSecure=”true”,同理为HTTPS验证相关,TRUE为采用HTTPS验证,FALSE为不采用https验证。
参数p:cookieMaxAge=”-1”,是COOKIE的最大生命周期,-1为无生命周期,即只在当前打开的窗口有效,关闭或重新打开其它窗口,仍会要求验证。可以根据需要修改为大于0的数字,比如3600等,意思是在3600秒内,打开任意窗口,都不需要验证。
将cookieSecure改为false , cookieMaxAge 改为3600

  • 修改cas下的/WEB-INF/spring-configuration/warnCookieGenerator.xml
    p:cookieSecure="true"
    p:cookieMaxAge="-1"
    p:cookieName="CASPRIVACY"
    p:cookiePath="/cas" />

    将cookieSecure改为false , cookieMaxAge 改为360

入门案例

  • 创建一个maven工程导入依赖,引入cas客户端依赖并制定tomcat运行端口为9001
#

      
      
     org.jasig.cas.client.session.SingleSignOutHttpSessionListener  
      
      
      
        CAS Single Sign Out Filter  
       org.jasig.cas.client.session.SingleSignOutFilter  
      
      
        CAS Single Sign Out Filter  
        /*  
      
      
      
        CASFilter       org.jasig.cas.client.authentication.AuthenticationFilter  
          
            casServerLoginUrl  
            http://localhost:9100/cas/login  
              
          
          
            serverName  
            http://localhost:9001
          
      
      
        CASFilter  
        /*  
      
      
      
        CAS Validation Filter  
             org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter  
          
            casServerUrlPrefix  
            http://localhost:9100/cas  
          
          
            serverName  
            http://localhost:9001
          
      
      
        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  
        /*  
      

* 编写index.jsp

#
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




半庭竹韵


欢迎来到这里
<%=request.getRemoteUser()%>


当你开着CAS的服务的时候,在启动这个项目,你打开这个index页面,就会显示用户名

你可能感兴趣的:(日常笔记的整理)