zoukankan      html  css  js  c++  java
  • 单点登录CAS使用记(二):部署CAS服务器以及客户端

    CAS-Server下载地址:https://www.apereo.org/projects/cas/download-cas

    CAS-Client下载地址:http://developer.jasig.org/cas-clients/

    CAS官方教程: https://wiki.jasig.org/display/CASUM/CAS+on+Windows+Quick+Setup+Guide

    版本:

    • CAS Server版本:cas-server-3.4.11
    • CAS Client版本:cas-client-3.2.1

    一:下载并且导入

    1.下载CAS

    cas-server-3.4.11-release.zip

    cas-client-3.2.1-release.zip

    2.解压cas-server-3.4.11-release.zip

    可以看到压缩包中有许多项目,我们只需要选用两个项目

    cas-server-core:主要业务功能实现,最终打包成jar被cas-server-webapp所使用

    cas-server-webapp:为CAS-server主项目,集中了各种配置文件

    其他都是一些扩展项目,特定情况下可以选用。

    modules下存放了打的好各种jar、wa包,如果你想要直接使用,无需修改源码,可以直接把这两个项目

    部署到Tomcat下面,直接启动。我这边需要查看源码,所以把源码直接导入Eclipse中,在Eclipse中启动。

     3.解压cas-client-3.2.1-release.zip

    cas-client-core导入Eclipse

    二:配置CAS-Client

    我现在有两个项目需要整合单点登录,两个项目分部被绑定到测试域名

    项目1:app1.testcas.com

    项目2:app2.testcas.com

    Cas-Server项目:demo.testcas.com

    备注:cas-client需要commons-logging的支持,如果你的项目没有导入本jar包,需要额外导入。

    打开项目1的WEB-INF/web.xml

    加入如下配置,红色部分按实际情况修改:

    <!-- ======================== start ======================== -->
        <listener>
            <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
        </listener>
        <filter>
            <filter-name>CAS Single Sign Out Filter</filter-name>
            <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>CAS Single Sign Out Filter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <filter>
            <filter-name>CAS Filter</filter-name>
            <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
            <init-param>
                <param-name>casServerLoginUrl</param-name>
                <param-value>https://demo.testcas.com/cas/login</param-value>
            </init-param>
            <init-param>
                <param-name>serverName</param-name>
                <param-value>http://app1.testcas.com</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CAS Filter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <filter>
            <filter-name>CAS Validation Filter</filter-name>
            <filter-class>
                org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
            </filter-class>
            <init-param>
                <param-name>casServerUrlPrefix</param-name>
                <param-value>https://demo.testcas.com/cas</param-value>
            </init-param>
            <init-param>
                <param-name>serverName</param-name>
                <param-value>http://app1.testcas.com</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CAS Validation Filter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <filter>
            <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
            <filter-class>
                org.jasig.cas.client.util.HttpServletRequestWrapperFilter
            </filter-class>
        </filter>
        <filter-mapping>
            <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <filter>
            <filter-name>CAS Assertion Thread Local Filter</filter-name>
            <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>CAS Assertion Thread Local Filter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <!-- ======================== end ======================== -->

    修改项目1的pom.xml

    <dependency>
        <groupId>org.jasig.cas.client</groupId>
        <artifactId>cas-client-core</artifactId>
        <version>3.2.1</version>
    </dependency>

    项目2按照同样步骤修改,只不过相应地址要适当修改。

    三.启动三个项目

    Cas-Server

    app1

    app2

    在地址栏输入:https://demo.testcas.com/cas/login

    默认的认证处理器支持那些用户名等于密码的账号,所以任意输入相同的用户名与密码即可登入。

    四.单点登录

    此时,我们已经实现了最简单的单点登录。

    1.如果用户还未登录,此时无论访问app1的哪个网址,页面都会cas-client重定向到CAS登录页面。

      重定向后的网址类似:

      https://demo.testcas.com/cas/login?service=http%3A%2F%2Fapp1.testcas.com%2Fb2c-haohai-server%2Fuser%2FcasLogin

      后缀了一个service参数。

    2.当用户输入用户名与密码后点击登录,页面又会被重定向会刚才想要访问的页面,并且后缀了ticket参数

      网址类似:

      http://app1.testcas.com/b2c-haohai-server/user/casLogin?ticket=ST-1-l9mf0oHYjZdSSSVBQcd1-cas

    3.当此时,用户再访问app2的网址时,这时就会绕过原有的登录页面,直接登入app2,app2实现了免登陆

    网址类似:

      http://app2.testcas.com/b2c-server/user/casLogin?ticket=ST-2-VDMdOnCx9gAAnyQ3xfET-cas

    4.当用户在浏览器输入

     https://demo.testcas.com/cas/logout

    强行注销后,再访问app1或者app2又会被重定向到CAS登录页面。


    单点登录CAS使用记系列:

  • 相关阅读:
    GNU make manual 翻译( 一百五十)
    [导入]Google开发者日见闻 王开源现身
    [导入]微软中国原高管宫力就任火狐中国总经理
    [导入]QQTalk Beta1 简体中文版
    [导入]《南方都市报》:国产龙芯产业化 难
    [导入][多图]Nokia正式发布奢华8600/6500双子手机
    [导入]用户界面设计的技巧与技术
    [导入]BitComet(比特彗星) 0.89
    [导入]µTorrent 1.7 beta 2248
    今天我注册了
  • 原文地址:https://www.cnblogs.com/notDog/p/5275149.html
Copyright © 2011-2022 走看看