zoukankan      html  css  js  c++  java
  • CAS单点登录原理简单介绍

    1. SSO简介

    1.1 单点登录定义

    单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以。计划在项目中加入单点登录,开发中,taoshop

    1.2 单点登录角色

    单点登录一般包括下面三种角色:

    ①用户(多个);

    ②认证中心(一个);

    ③Web应用(多个)。

    PS:这里所说的web应用可以理解为SSO Client,认证中心可以说是SSO Server。

    2. CAS简介

    2.1 CAS简单定义

    CAS(Center Authentication Service)是耶鲁大学研究的一款开源的单点登录项目,主要为web项目提供单点登录实现,属于Web SSO

    2.2 CAS体系结构

    CAS体系结构分为CAS Server和CAS Client。

    这里写图片描述
    PS:图来自官网

    2.3 CAS原理

    下面给出一张来自CAS官方的图片
    这里写图片描述
    CAS登录等系统分为CAS Server和CAS Client,下面,我根据我的理解稍微解释一下:

    1、用户访问CAS Client请求资源

    2、客户端程序做了重定向,重定向到CAS Server

    3、CAS Server会对请求做认证

    4、认证通过后会生成一个Ticket返回Cas Client

    5、然后Cas Client就带着Ticket再次访问Cas Server,CAS Server进行Ticket验证

    6、CAS Server对Ticket进行再次验证,然后通过就返回用户信息,用户拿到信息后就可以登录

    看到这个过程,我们大概就能理解CAS是怎么实现的,看起来过程挺多的,不过这些过程都是CAS在后台做的

    CAS单点登录

    现在博客简单介绍一下,CAS Server简单部署实现,CAS是一款开源框架,目前应用比较广泛。下面简单介绍一下:
    cas开源到github上,不过只有几个版本有cas release服务端,其它大部分版本都只有source源码而已,所以其它版本都需要自己编译,不想自己编译的可以下载V4.0.0版本的。
    https://github.com/apereo/cas/releases/tag/v4.0.0

    下载cas server之后,我们就可以简单部署一下,中间件可以用Tomcat
    cas的安全机制是依靠SSL实现的,所以一般的http非安全链接不支持的,虽然是这么说,不过学习练习的话,也可以去掉https要求,下面介绍说一下:

    可以先将cas-server-4.0.0-release.zip解压到Tomcat的webapp目录下面,然后需要修改一个配置文件
    (1)、先修改一下cas-server-4.0.0-release的WEB-INF下面的deployerConfigContext.xml
    修改前:

    <!-- Required for proxy ticket mechanism. -->
        <bean id="proxyAuthenticationHandler"
              class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
              p:httpClient-ref="httpClient"  />
    

    修改后,PS:加上p:requireSecure="false"

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

    (2)、修改WEB-INF下面的spring-configuration文件夹下面的ticketGrantingTicketCookieGenerator.xml
    修改前:

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

    修改后,PS:改为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" />
    

    (3)、修改WEB-INF下面的spring-configuration文件夹下面的warnCookieGenerator.xml
    修改前:

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

    修改后,PS:改为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" />
    

    (4)、修改CAS默认登录jsp页面
    可以注释WEB-INFviewjspdefaultuicasLoginView.jsp页面如下代码

    <c:if test="${not pageContext.request.secure}">
      <div id="msg" class="errors">
        <h2>Non-secure Connection</h2>
        <p>You are currently accessing CAS over a non-secure connection.  Single Sign On WILL NOT WORK.  In order to have single sign on work, you MUST log in over HTTPS.</p>
      </div>
    </c:if>
    

    去掉Https支持要求后,就可以通过http的链接登录cas server了,用户名是casuser,密码是Mellon
    PS:可以在deployerConfigContext.xml里看到配置,正规项目是实现jdbc支持

    <bean id="primaryAuthenticationHandler"
              class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
            <property name="users">
                <map>
                    <entry key="casuser" value="Mellon"/>
                </map>
            </property>
        </bean>
    

    登录成功
    这里写图片描述

    待续...,PS:找时间继续写...

    附录

    PS:参考学习教程

    单点登录实现方式:
    单点登录的三种实现方式

    SpringBoot集成Cas
    SpringBoot集成CAS
    Spring Boot 集成Shiro和CAS
    基于Spring Boot的单点登录
    springboot + shiro + cas4.2.7 实战

    CAS单点登录教程:
    Cas专题文章列表
    测试认证方式搭建CAS
    SSO之单点登录详细搭建教程
    CAS实现SSO单点登录原理
    使用 CAS 在 Tomcat 中实现单点登录

  • 相关阅读:
    C# 窗体WinForm中动态显示radioButton实例
    C#和Java交互相关研究
    c# 注册表操作,创建,删除,修改,判断节点是否存在
    C#单例模式的三种写法
    C#中使用TCP通信
    c#中this的用法
    C#单例模式的三种写法
    二十道经典C#面试题
    Linux chattr 命令详解
    Linux ulimit命令详解
  • 原文地址:https://www.cnblogs.com/mzq123/p/9839862.html
Copyright © 2011-2022 走看看