单点登录

1.什么是单点登录?

单点登录(signle sign on),简称SSO,是目前企业业务整合的解决方案之一。定义在多个应用系统中,只要进行一次登录就可以访问所有信任的应用系统。

2.单点登录的原理

单点登录_第1张图片

 当用户首次登录应用系统1时,会自动跳转到认证系统的登录页面进行登录,认证系统根据输入的信息与数据库对比,登录成功之后返回给用户一个票据;当用户再去访问应用系统2时就会携带票据给应用系统2,应用系统2拿着票据找认证系统进行验证,验证通过后就可以使用应用系统2,同时应用系统2已经有了用户的用户名等信息。

3.什么是cas?

cas是Yale大学开发的一个开源项目,为web应用系统提供一种可靠的单点登录方法。

单点登录_第2张图片

 4.部署cas服务端

解压一个tomcat,把cas.war放到webapp中,启动tomcat,在浏览器中输入localhost:8080/cas即可进入登录的页面。

单点登录_第3张图片

这个页面是cas定义的,用户名是casuser,密码是Mellon。输入正确的用户名密码可以到登录成功的页面。

这个用户名和密码可以修改,打开webapps/cas/WEB-INF/deployerConfigContext.xml,找到单点登录_第4张图片

 就可以在这里修改用户名和密码。

5.cas服务端配置

1)修改服务器的端口号

 打开tomcat目录,在conf.server.xml中找到如下配置,将8080改为9100.

 

 修改cas配置文件的端口。打开webapps/cas/WEB-INF/cas.properties,修改端口号:

server.name=http://localhost:9100 

2)去除https认证

cas默认使用https协议,使用https协议需要ssl证书。为了方便测试,这里就去除https认证。

(1)修改cas/WEB-INF/deployerConfigContext.xml。

找到如下配置:

 "proxyAuthenticationHandler" class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
       p:httpClient-ref="httpClient" />

将其修改为

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

(2)修改cas\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml

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

把p:cookieSecure="true"的true改为falsep:cookieMaxAge="-1"的-1改为3600。

(3)修改cas\WEB-INF\spring-configuration\warnCookieGenerator.xml,修改如下:

"warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
        p:cookieSecure="false"
        p:cookieMaxAge="3600"
        p:cookieName="CASPRIVACY"
        p:cookiePath="/cas" />

 

重启服务器,测试配置是否正常。

6.cas客户端入门小demo

1)新建一个maven的web工程,名为cas-demo1,添加依赖:


        
        
            org.jasig.cas.client
            cas-client-core
            3.3.3
        
        
            javax.servlet
            servlet-api
            2.5
            provided
        
    
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    1.8
                    1.8
                
            
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                    
                    9001
                    
                    /
                
            
        
    

2)配置web.xml,黄色背景的地方可根据实际情况修改:

"1.0" encoding="UTF-8"?>
"http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    
        class>org.jasig.cas.client.session.SingleSignOutHttpSessionListenerclass>
    
    
    
        CAS Single Sign Out Filter
        class>org.jasig.cas.client.session.SingleSignOutFilterclass>
    
    
        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
        /*
    

3)新建一个index.jsp页面:

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


    Title


欢迎来到cas测试demo1------登录名:<%=request.getRemoteUser()%>

4)再同上创建一个maven的web工程,名字为cas-demo2,端口号使用9002。

5)先启动cas服务器,然后分别启动cas-demo1和cas-demo2。

6)在浏览器输入localhost:9001回车,由于没有登录,所以会跳转到cas的登录页面,登录之后会显示首页信息,包括登录名。

 

7)然后直接访问localhost:9002,会直接显示这个项目的首页,原因是已经登录过了,就实现了一次登录,随处可用的效果。

7.退出登录

1)设置退出按钮。在index.jsp添加:

 

 

2)设置允许重定向,添加退出后跳转的页面。打开cas\WEB-INF\cas-servlet.xml,修改配置:

 "logoutAction" class="org.jasig.cas.web.flow.LogoutAction"
        p:servicesManager-ref="servicesManager"
        p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"/>

 

重启服务器后进行退出登录测试,点击退出时会退出到百度的页面。

8.配置数据源

登录使用的用户名和密码一般是从数据库取的,所以要更改数据源。

 

你可能感兴趣的