1. 程式人生 > >CAS 實現的單點登入

CAS 實現的單點登入

——任何的成功都不是一蹴而就,經驗需要慢慢積累、沉澱!

專案裡面用到了CAS單點登入,最近也簡單的從應用層面簡單研究了下CAS這個開源架構

1. 基本概念:cookie, session, 會話cookie, jssessionid

- cookie 和 session機制都是為了解決HTTP協議的無狀態性而生的

- cookie 是客戶端儲存使用者資訊的機制

- session 是伺服器端儲存使用者資訊的機制

- cookie其實就是儲存在瀏覽器中的一小段文字,當瀏覽器第一次訪問jsp時,jsp response會給瀏覽器生成一個cookie,然後瀏覽器會儲存它

- cookie 具有不可跨域性

- cookie 和session 聯合使用可以解決跨域記錄使用者資訊的問題

- 為了使瀏覽器記住伺服器上的session,瀏覽器會生成一個id , 這個id就叫做jsessionid

- 另外,由於一些瀏覽器禁用cookie, Java EE標準 退出了URL重寫,使url裡面記錄jssessionid

- 上述讓瀏覽器記住伺服器上的session的形式就叫做會話cookie,會話cookie在使用者登出或者瀏覽器關閉後自動刪除,這樣就叫做一次會話。

理解了上面的基本概念和標準,對於理解cas的實現和基本流程很有幫助,cas這樣的sso解決方案本來就是構建在cookie和session標準之上的。

2. SSO 和 CAS 介紹

SSO 單點登入,是企業為了解決在相互信任的系統上實現一次登入的解決方案。CAS 是SSO解決方案裡面比較成熟的架構,是耶魯大學發起的一個開源架構。

CAS 具有以下特點:
- 開源的企業級單點登入解決方案。
- CAS Server 為需要獨立部署的 Web 應用。
- CAS Client 支援非常多的客戶端(這裡指單點登入系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

從結構上看,CAS 包含兩個部分: CAS Server 和 CAS Client。CAS Server 需要獨立部署,主要負責對使用者的認證工作;CAS Client 負責處理對客戶端受保護資源的訪問請求,需要登入時,重定向到 CAS Server。

3. CAS 基本流程


CAS 基本流程 一文已經有相當詳細的介紹了。

4. 基本配置

下面給出了專案中關於cas 單點登入的配置:

  1. <!-- ======================== 單點登入配置開始 ======================== -->
  2.     <!-- 該過濾器用於實現單點登出功能,可選配置。 -->
  3.     <filter>
  4.         <filter-name>SSOFilter</filter-name>
  5.         <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
  6.     </filter>
  7.     <filter-mapping>
  8.         <filter-name>SSOFilter</filter-name>
  9.         <url-pattern>*.do</url-pattern>
  10.     </filter-mapping>
  11.     <filter-mapping>
  12.         <filter-name>SSOFilter</filter-name>
  13.         <url-pattern>*.htm</url-pattern>
  14.     </filter-mapping>
  15.     <filter-mapping>
  16.         <filter-name>SSOFilter</filter-name>
  17.         <url-pattern>*.html</url-pattern>
  18.     </filter-mapping>
  19.     <!-- 該過濾器負責使用者登陸的心跳判斷 -->
  20.     <filter>
  21.         <filter-name>AuthHeartFilter</filter-name>
  22.         <filter-class>com.whty.cms.web.common.filter.AuthenticationHeartFilter</filter-class>
  23.     </filter>
  24.     <filter-mapping>
  25.         <filter-name>AuthHeartFilter</filter-name>
  26.         <url-pattern>*.htm</url-pattern>
  27.     </filter-mapping>
  28.     <filter-mapping>
  29.         <filter-name>AuthHeartFilter</filter-name>
  30.         <url-pattern>*.do</url-pattern>
  31.     </filter-mapping>
  32.     <!-- 該過濾器負責使用者的認證工作,必須啟用它 -->
  33.     <filter>
  34.         <filter-name>AuthFilter</filter-name>
  35.         <filter-class>com.whty.cms.common.filter.AuthenticationFilter</filter-class>
  36.     </filter>
  37.     <filter-mapping>
  38.         <filter-name>AuthFilter</filter-name>
  39.         <url-pattern>*.do</url-pattern>
  40.     </filter-mapping>
  41.     <filter-mapping>
  42.         <filter-name>AuthFilter</filter-name>
  43.         <url-pattern>*.htm</url-pattern>
  44.     </filter-mapping>
  45.     <!-- 該過濾器負責對Ticket的校驗工作,必須啟用它 -->
  46.     <filter>
  47.         <filter-name>TicketValidFilter</filter-name>
  48.         <filter-class>com.whty.cms.common.filter.Cas20ProxyReceivingTicketValidationFilter</filter-class>
  49.         <init-param>
  50.             <param-name>casServerUrlPrefix</param-name>
  51.             <param-value>http://yuncs.zjer.cn:30014/aamif/ticketValidate</param-value>
  52.         </init-param>
  53.         <init-param>
  54.             <param-name>redirectAfterValidation</param-name>
  55.             <param-value>true</param-value>
  56.         </init-param>
  57.         <init-param>
  58.             <param-name>artifactParameterName</param-name>
  59.             <param-value>ticket</param-value>
  60.         </init-param>
  61.     </filter>
  62.     <filter-mapping>
  63.         <filter-name>TicketValidFilter</filter-name>
  64.         <url-pattern>*.do</url-pattern>
  65.     </filter-mapping>
  66.     <filter-mapping>
  67.         <filter-name>TicketValidFilter</filter-name>
  68.         <url-pattern>*.htm</url-pattern>
  69.     </filter-mapping>
  70.     <!-- 該過濾器負責實現HttpServletRequest請求的包裹, 比如允許開發者通過HttpServletRequest的getRemoteUser()方法獲得SSO登入使用者的登入名,可選配置。 -->
  71.     <filter>
  72.         <filter-name>HttpServletRequestWrapperFilter</filter-name>
  73.         <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
  74.     </filter>
  75.     <filter-mapping>
  76.         <filter-name>HttpServletRequestWrapperFilter</filter-name>
  77. 相關推薦

    CAS實現登入(SSO)

    什麼是單點登入 單點登入(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。 我們目前的系統存在諸多子系統,而這些子系統是分別部署在不

    CAS實現登入SSO執行原理探究(終於明白了)

    一、不落俗套的開始 1、背景介紹 單點登入:Single Sign On,簡稱SSO,SSO使得在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。 CAS框架:CAS(Central Authentication Service)是實現S

    CAS實現登入(sso)搭建流程 伺服器端搭建

    一、簡介 1、cas是有耶魯大學研發的單點登入伺服器 2、所用環境 ·        Linux系統 ·        To

    cas實現登入-應用場景和完整配置

    Cas 簡介 1、什麼是CAS CAS是一個單點登入(SSO)的框架。單點登入是目前比較流行的服務於企業業務整合的解決方案之一,SSO使得在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。 2、CAS的主要結構 CAS包括兩部分:

    CAS 實現登入oos(2)

      前面已經介紹了CAS伺服器的搭建,詳情見:搭建CAS單點登入伺服器。然而前面只是簡單地介紹了伺服器的搭建,其驗證方式是原始的配置檔案的方式,這顯然不能滿足日常的需求。下面介紹下通過mysql資料庫認證的方式。   一、CAS認證之mysql資料庫認證   1、在mysql中新建一個cas資料庫並建立us

    Spring Security 4.0 CAS實現登入

    1、各framework版本資訊       JDK 8       Tomcat 7       SpringMVC-4.2.0.RELEASE       Spring Security 4.2.0.RELEASE       CAS-Client 3.3.3       CAS-Serv

    基於CAS實現登入(SSO):CAS+LDAP實現登入認證

    [一]、概述 CAS是N個系統的中心認證入口,而貫穿多個系統的使用者資訊是共用的,應該被單獨維護,而這些資訊可能屬於不用的系統,不用的組織,不用的國家,從而形成了樹形結構,而使用關係型資料庫維護樹形結構資訊是它的弱點,這就是本文CAS和LDAP整合的初衷。 本來主要

    Shiro & CAS 實現登入

    概覽 單點登入主要用於多系統整合,即在多個系統中,使用者只需要到一箇中央伺服器登入一次即可訪問這些系統中的任何一個,無須多次登入。 部署伺服器 Tomcat預設沒有開啟HTTPS協議,所以這裡直接用了HTTP協議訪問。為了能使客戶端在HTTP協議下單點登入成

    CAS實現登入的時序圖

    CAS單點登入時序圖: PS:該圖為自己根據CAS驗證過程及真例項子總結出來的時序圖,其中步驟8和步驟9未證實,如果有不對的地方歡迎指正。 猜想: 一直用HttpWatch觀察後臺html請求狀態,所以步驟8和9只能看到一次從cas server的重定向,始終找不到步驟8

    CAS實現登入(二):自定義的使用者驗證登入

    上一篇演示單點登入服務端認證機制採用的是cas server預設的使用者名稱和密碼(admin/admin)。今天介紹正常專案中如何通過驗證DB中的使用者資料,來驗證使用者的密碼的合法性 自定義驗證登入有兩種方式: 採用cas-server預設的資料庫查詢

    spring security整合cas實現登入

    spring security整合cas 0.配置本地ssl連線 操作記錄如下: =====================1.建立證書檔案thekeystore ,並匯出為thekeystore.crt cd C:\Users\23570\keystore C:\Users\23570\keystore&

    基於CAS登入SSO[5]: 基於Springboot實現CAS客戶端的前後端分離

    基於CAS的單點登入SSO[5]: 基於Springboot實現CAS客戶端的前後端分離 作者:家輝,日期:2017-08-24 CSDN部落格: http://blog.csdn.net/gobitan 摘要:現在大部分系統的開發都已經

    據說是springboot下實現cas登入(但是我總感覺是MVC)----基於前後臺分離的

    一、前言 前後端分離開發是目前軟體開發的主流,大大提高了開發效率  但也帶來了很多不方便之處。 1、優點:  ① 傳統全棧開發的 MVC 模式將不適合,後臺採取 MVP 面向介面程式設計,耦合度大大降低 2、缺點:  ① 跨域問題不勝其擾 3、原則:&n

    cas+tomcat+shiro實現登入-4-Apache Shiro 整合Cas作為cas client端實現

    目錄 4.Apache Shiro 整合Cas作為cas client端實現 Apache Shiro 整合Cas作為cas client端實現 第一步、新增maven依賴      <!-- shiro依賴包 -->

    cas shiro spring實現登入

    這裡貼出傳送門,來自幕課網大神。講了cas配置和cas的基本原理。 CAS deployerConfigContext.xml配置檔案 預設通過配置檔案管理授權登入賬戶 <bean id="primaryAuthentication

    spring boot 1.5.4 整合shiro+cas實現登入和許可權控制

    1.安裝cas-server-3.5.2 官網:https://github.com/apereo/cas/releases/tag/v3.5.2 注意: 輸入 <tomcat_key> 的金鑰口令 (如果和金鑰庫口令相同, 按回車) ,這裡直接回車,也採用keystore密碼changei

    pac4j探索(二): buji-pac4j+Cas+Shiro+SpringMvc實現登入

    在pac4j探索的上一篇文章大致講述了一下buji-pac4j+CAS的認證流程。這裡記錄一下本人實現的最簡單的單點登入,僅作為筆記、學習交流之用,戳這裡獲取本文原始碼。 一、專案框架 1、 buji-pac4j(v.3.0.0) 2、

    SSO之CAS+LDAP實現登入認證

    目錄: 概述 詳細步驟 LDAP安裝配置 CAS基礎安裝配置 CAS整合LDAP的配置 [一]、概述 本來主要詳細是介紹CAS和LDAP整合實現單點登入的步驟。 [二]、詳細步驟 安裝配置,新增部分測試資料如下

    cas 在tomcat中實現登入

     一.開發準備: 環境:OS:windows xp IDE:myeclipse 6.0 web伺服器:tomcat 6.0 JDK: jdk1.6.0_05 資料庫:mysql 6.0準備:cas-client-java-2.1.1.zip  [建議使用迅雷下載] cas-

    CAS+LDAP實現登入認證

    <groupId>org.jasig.cas</groupId> <artifactId>cas-server-support-ldap</artifactId> <version>${cas.version}</version> <