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-INF\view\jsp\default\ui\casLoginView.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 中實現單點登錄

轉載于:https://www.cnblogs.com/mzq123/p/9839862.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249155.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249155.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249155.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端跨域通信的幾種方式

前言 前端通信類的問題&#xff0c;主要包括以下內容&#xff1a; 1、什么是同源策略及限制 同源策略是一個概念&#xff0c;就一句話。有什么限制&#xff0c;就三句話。能說出來即可。 2、前后端如何通信 如果你不準備&#xff0c;估計也就只能說出ajax。 3、如何創建Aja…

T4((Text Template Transformation Toolkit))模版引擎之基礎入門 C#中文本模板(.tt)的應用...

1 關于C#中文本模板(.tt)的簡單應用https://blog.csdn.net/zunguitiancheng/article/details/78011145 任何一個傻瓜都能寫出計算機能理解的程序&#xff0c;而優秀的程序員卻能寫出別人能讀得懂的程序。—— Martin Fowler 2 T4模版引擎之生成數據庫實體類 http://www.cnblogs…

LeetCode412Fizz Buzz

寫一個程序&#xff0c;輸出從 1 到 n 數字的字符串表示。 1. 如果 n 是3的倍數&#xff0c;輸出“Fizz”&#xff1b; 2. 如果 n 是5的倍數&#xff0c;輸出“Buzz”&#xff1b; 3.如果 n 同時是3和5的倍數&#xff0c;輸出 “FizzBuzz”。 示例&#xff1a; n 15, 返回: [ …

vue+node實現中間層同步調用接口

為了應對業務的復雜性&#xff0c;提高前端的渲染能力&#xff0c;故在項目中引入nodejs做中間層&#xff0c;前端承接vue&#xff0c;后端對接Java。 至于為什么這么搞&#xff0c;網上有好多文章都在討論&#xff0c;可以說仁者見仁智者見智&#xff0c;這里我們不在深究。 …

ES6學習筆記(二十二)ArrayBuffer

ArrayBuffer ArrayBuffer對象、TypedArray視圖和DataView視圖是 JavaScript 操作二進制數據的一個接口。它們都是以數組的語法處理二進制數據&#xff0c;所以統稱為二進制數組。 二進制數組由三類對象組成。 &#xff08;1&#xff09;ArrayBuffer對象&#xff1a; 代表內存之…

如何正確地使用Java的@deprecated標注

沒有什么事情比看到一個沒有任何說明的deprecated標注更讓人憤怒的事情了。這種做法只能讓人困惑&#xff0c;我到底還要不要用這個已經‘廢棄’的方法&#xff1f;如果開發者不希望某個方法再被人用的話&#xff0c;就要好好地為deprecated標注寫說明。這篇文章就討論了正確地…

實現div里的img圖片水平垂直居中

body結構 <body><div><img src"1.jpg" alt"haha"></div> </body>方法一&#xff1a; 將display設置成table-cell&#xff0c;然后水平居中設置text-align為center&#xff0c;垂直居中設置vertical-align為middle。 <…

[ 懶人神器 ] —— OO一鍵build:.zip - .jar

懶人神器 更新 大家注意一下&#xff0c;由于在寫入MANIFEST的時候&#xff0c;Class-Path路徑給的是 ../lib &#xff0c;即上級目錄的lib。 所以在對拍時如果手動移動了 jar包的位置&#xff0c;需要保證 lib/ 文件夾在存放jar包的上一級目錄下&#xff0c;否則在運行時會報錯…

實現Datagrid分頁

Html頁面&#xff1a; <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title></title><meta charset"utf-8" /><!-- 引入相關CSS --><…

Luogu 3698 [CQOI2017]小Q的棋盤

BZOJ 4813 雖然數據范圍很迷人&#xff0c;但是想樹形$dp$沒有前途。 先發現一個事情&#xff0c;就是我們可以先選擇一條鏈&#xff0c;最后要走到這一條鏈上不回來&#xff0c;走到鏈上的點每一個只需要一步&#xff0c;而如果要走這條鏈之外的點&#xff0c;一個點需要走兩步…

h5-plus.webview

這里是鏈接轉載于:https://www.cnblogs.com/yuners/p/10721163.html

解決vue打包后靜態資源路徑錯誤的問題

vue項目完成的最后一步就是打包部署上線&#xff0c;但是打包部署的過程往往不是那么一帆風順的&#xff0c;現將遇到問題和解決方案記錄如下。 圖片路徑問題 起因&#xff1a; 頁面中引入資源的方式往往有如下幾種 * HTML標簽中直接引入圖片&#xff0c; 如 <img src&qu…

SQL語句01

SQL(Structured Query Language)&#xff1a;結構化查詢語言SQL分類&#xff1a; 數據操縱語言DML&#xff08;Data Manipulation Language&#xff09; SELECT INSERT UPDATE DELETE 數據定義語言DDL&#xff08;Data definition language&#xff09; …

mongoose 筆記

快速啟動 首先需要安裝MongoDB和Node.js。 然后使用npm下載mongoose&#xff1a; npm install mongoose 接著我們直接在項目中引入mongoose&#xff0c;并且連接數據庫就會在本地運行 MongoDB了&#xff1a; // index.js var mongoose require(mongoose); mongoose.connect(…

前端DES加密

1、下載crypto.js文件庫 https://github.com/brix/crypto-js/releases 2、引入文件 <script type"text/javascript" src"js/jquery.min.js"></script> <script src"js/rollups/tripledes.js"></script> <script src&…

DOMBOM(source、methods、contents、Application)

何為DOM&#xff1f; Document Object Model Dom&#xff0c;是W3C組織推薦的處理可擴展標志語言的標準編程接口。在網頁上&#xff0c;組織頁面的對象被組織在一個樹形結構中&#xff0c;用來表示文檔中對象的標準模型就稱為DOM。 可以認為DOM是頁面上數據和結構的一個樹形表示…

sublime 無法下載插件解決辦法(親測有效)

最近發現sublime裝不到插件 只需要在Preferences > Package Settings > Package Control > Settings - User頁面加上以下代碼即可&#xff1a; "channels":["https://erhan.in/channel_v3.json"]上述頻道親測有效&#xff0c;如果還不能使用的小…

ES命令

基礎概念 Elasticsearch有幾個核心概念。從一開始理解這些概念會對整個學習過程有莫大的幫助。 接近實時&#xff08;NRT&#xff09; Elasticsearch是一個接近實時的搜索平臺。這意味著&#xff0c;從索引一個文檔直到這個文檔能夠被搜索到有一個輕微的延遲&#xff…

Bug : Bash on Ubuntu on Windows scp work on window but not in shell file

&#xff1a; No Permission轉載于:https://www.cnblogs.com/rgqancy/p/10726154.html

圖片做背景撐開div

需求點&#xff1a; 設計師給了一張超大背景圖&#xff0c;需要做一個不知道大小廣告位&#xff0c;要求就是要把圖片撐滿整個頁面&#xff0c;而且還得保證自適應。 解決方案一 &#xff08;親測有效&#xff09; HTML代碼&#xff1a; <div class"wrap">…