CAS服務端入門使用實踐

CAS服務端入門使用實踐

一、前言

1.簡介

CAS 是一個企業多語言單點登錄解決方案,支持大量附加身份驗證協議和功能,滿足身份驗證和授權需求的綜合平臺。

2.環境

  • Windows 10
  • JDK 1.8
  • git version 2.41.0.windows.3
  • Tomcat 9.0.78
  • Maven 3.5.3
  • cas-overlay-template-5.3

CAS Home:https://apereo.github.io/cas

cas-overlay-template - GitHub:https://github.com/apereo/cas-overlay-template/tree/5.3

REST-Protocol:https://apereo.github.io/cas/development/protocol/REST-Protocol.html

Tomcat 9:https://tomcat.apache.org/download-90.cgi

Anumbrella - CAS 專欄:https://blog.csdn.net/anumbrella/category_7765386.html

Shuyun123 - GitHub:https://github.com/Shuyun123/CAS

二、使用實踐

1.編譯項目

  • 下載項目:https://github.com/apereo/cas-overlay-template/tree/5.3
  • 解壓 cas-overlay-template-5.3.zip
  • 進入文件夾 cas-overlay-template-5.3

第一種編譯:

  • 使用 Git 命令窗口

  • 右擊 - Open Git Bash here

./build.sh package

第二種編譯:

  • CMD 窗口
build.cmd package
  • CAS 編譯后的目錄:cas-overlay-template-5.3\target\cas

2.部署項目

  • 下載 Tomcat 9:https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.78/bin/apache-tomcat-9.0.78.zip

  • 解壓 Tomcat

  • 將 target 文件夾下的 cas 文件夾拷貝到 Tomcat 中:apache-tomcat-9.0.78\webapps

在這里插入圖片描述

  • 注意:JDK 版本是1.8

  • 啟動 Tomcat:雙擊 apache-tomcat-9.0.78\bin\startup.bat

  • 瀏覽器訪問:http://127.0.0.1:8080/cas

  • 默認賬號密碼:casuser::Mellon

  • 默認賬號密碼配置文件:

    cas-overlay-template-5.3\target\cas\WEB-INF\classes\application.properties

在這里插入圖片描述

3.配置HTTPS

  • 登錄頁面的黃色背景提示內容:
非安全連接
您當前正在通過非安全連接訪問 CAS。單點登錄不起作用。為了進行單點登錄,您必須通過 HTTPS 登錄。

1)生成密鑰

  • JDK 的 bin 目錄下執行

  • 記住密碼,導出證書需要使用

  • 您的名字與姓氏是什么,填寫域名,例如:test.org

keytool -genkey -alias mycacerts -keyalg RSA -keystore  D:/ssh-key/keycard

在這里插入圖片描述

2)導出證書

  • JDK 的 bin 文件夾下執行
keytool -export -file D://ssh-key/keycard.crt -alias mycacerts -keystore D:/ssh-key/keycard

3)Tomcat配置HTTPS

  • 編輯 apache-tomcat-9.0.78\conf\server.xml

  • 新增 8443 端口的 HTTPS 配置

  • 修改具體的密鑰路徑和密鑰庫口令(與生成密鑰時相同)

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true"maxParameterCount="1000"scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"keystoreFile="D:/ssh-key/keycard"   keystorePass="123456">
</Connector>

4)配置 hosts 文件

  • 編輯 C:\Windows\System32\drivers\etc\hosts
  • 與生成密鑰時相同
127.0.0.1 test.org

5)測試

  • 關閉科學上網軟件(無則忽略)

  • 瀏覽器訪問:https://test.org:8443/cas

在這里插入圖片描述

4.未認證授權的服務

  • 客戶端跳轉提示:
未認證授權的服務
CAS的服務記錄是空的,沒有定義服務。 希望通過CAS進行認證的應用程序必須在服務記錄中明確定義。

(1)編輯 cas\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json

  • 加入 http 的支持
{"@class" : "org.apereo.cas.services.RegexRegisteredService","serviceId" : "^(https|imaps|http)://.*","name" : "HTTPS and IMAPS","id" : 10000001,"description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.","evaluationOrder" : 10000
}

(2)編輯 cas\WEB-INF\classes\application.properties

#是否開啟json識別功能,默認為false
cas.serviceRegistry.initFromJson=true
#忽略https安全協議,使用 HTTP 協議
cas.tgc.secure=false

5.二次開發

1)登錄認證方式

認證方式依賴包
白名單cas-server-support-generic
黑名單
JDBC 認證
Shiro 認證cas-server-support-shiro-authentication
Rest 認證cas-server-support-rest-authentication
自定義登錄認證cas-server-core-authentication-api
cas-server-core-configuration-api

2)修改CAS服務端登錄界面

(1)隱藏頭部和底部

  • 編輯:cas\WEB-INF\classes\templates\layout.html
<body>
<!-- <div th:replace="fragments/header :: header"><a href="fragments/header.html">Header</a> fragment will go here
</div> --><main role="main" class="container mt-3 mb-3"><div layout:fragment="content" id="content">CAS content will go here</div>
</main><!-- <div th:replace="fragments/footer :: footer"><a href="fragments/footer.html">Footer</a> fragment will go here
</div> --><script th:replace="fragments/scripts"/>
</body>

(2)隱藏右側 Links to CAS Resources

  • 編輯:cas\WEB-INF\classes\templates\casLoginView.html
<body class="login">
<main role="main" class="container mt-3 mb-3"><div layout:fragment="content" class="row"><div class="col-md"><div th:replace="fragments/loginform :: loginform"><a href="fragments/loginform.html">Login Form goeshere</a></div></div><div id="notices" class="col-md mt-3 mt-md-0"><!-- <div th:replace="fragments/insecure :: insecure"><a href="fragments/insecure.html">insecure alert goeshere</a></div><div th:replace="fragments/defaultauthn :: staticAuthentication"><a href="fragments/defaultauthn.html">defaultAuthn</a>fragment</div><div th:replace="fragments/cookies :: cookiesDisabled"><a href="fragments/cookies.html">cookies</a> fragment</div><div th:replace="fragments/serviceui :: serviceUI"><a href="fragments/serviceui.html">service ui</a> fragment</div><div th:replace="fragments/loginProviders :: loginProviders"><a href="fragments/loginProviders.html">loginProviders</a>fragment</div><div th:replace="fragments/cas-resources-list :: cas-resource-list"><a href="fragments/cas-resources-list.html">cas-resource</a> list fragment</div> --></div></div>
</main>
</body>

(3)隱藏登錄按鈕下的提示

  • 編輯:cas\WEB-INF\classes\templates\fragments\loginform.html
<!-- <div th:replace="fragments/loginsidebar :: loginsidebar" /> -->

(4)登錄界面左側顯示圖片

  • 拷貝圖片到文件夾:cas\WEB-INF\classes\static\images

  • 編輯:cas\WEB-INF\classes\static\css\cas.css

#notices {border-color: #008;color: #008;background-image: url(../images/login_img.png);
}

(5)更換瀏覽器標簽頁圖標

  • 替換圖片文件:cas\WEB-INF\classes\static\favicon.ico

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

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

相關文章

【ARM 嵌入式 編譯系列 4.2 -- GCC 鏈接規范 extern “C“ 介紹】

文章目錄 extern "C" 介紹extern "C" 使用示例1.2.2 作用場景 上篇文章&#xff1a;ARM 嵌入式 編譯系列 4.1 – GCC 編譯屬性 likely與unlikely 學習 下篇文章&#xff1a;ARM 嵌入式 編譯系列 5 – GCC 內建函數 __builtin 介紹 extern “C” 介紹 exte…

輕轍視覺引擎以多種AI算法工具,助力紡織行業斷線檢測智能識別

近年來&#xff0c;人工智能技術在各行各業的應用愈發廣泛&#xff0c;機器視覺作為人工智能的重要分支&#xff0c;成為當下的研究熱點。機器視覺技術的發展&#xff0c;大幅提升了工業、農業、醫療等領域的效率和精度。尤其在工業領域&#xff0c;隨著智能制造的進一步發展&a…

stringstream常見用法

目錄 構造函數 輸出字符串 修改和清空字符串 利用 stringstream 去除字符串空格 利用stringstream去除指定的字符 stringstream 數據庫 <sstream> 構造函數 創建一個對象&#xff0c;向對象輸入字符串&#xff1a; string x"abcdefg";stringstream s…

Zookeeper與Kafka

Zookeeper與Kafka 一、Zookeeper 概述1.Zookeeper 定義2.Zookeeper 工作機制3.Zookeeper 特點4.Zookeeper 數據結構5.Zookeeper 應用場景6.Zookeeper 選舉機制 二、部署 Zookeeper 集群1.準備 3 臺服務器做 Zookeeper 集群2.安裝 Zookeeper3.拷貝配置好的 Zookeeper 配置文件到…

【Java】 java | git | win系統重裝會給開發環境帶來哪些問題

一、概述 1、近期發現電腦用起來不絲滑了&#xff0c;文件夾操作卡頓&#xff0c;一陣操作還會藍屏 2、不能忍&#xff0c;整理排查 二、電腦情況 1、CPU&#xff1a; I5-9400F 2.9GHz 6核 2、內存&#xff1a; 32G 3、固態&#xff1a;256G 4、機械&#xff1a;1T 5、盤符使用…

二叉樹的講解

&#x1f493;博主個人主頁:不是笨小孩&#x1f440; ?專欄分類:數據結構與算法&#x1f440; 刷題專欄&#x1f440; C語言&#x1f440; &#x1f69a;代碼倉庫:笨小孩的代碼庫&#x1f440; ?社區&#xff1a;不是笨小孩&#x1f440; &#x1f339;歡迎大家三連關注&…

詳解C語言中的int8_t、uint8_t、int16_t、uint16_t、int32_t、uint32_t、int64_t、uint64_t

2023年8月8日&#xff0c;周二上午 目錄 為什么會產生int8_t、uint8_t等這類數據類型int8_t、uint8_t等這類數據類型有什么用頭文件int8_t、uint8_t等這類數據類型是怎么實現的 為什么會產生int8_t、uint8_t等這類數據類型 根本原因在于&#xff0c;C 語言標準只是規定了各個…

SQL | 匯總數據

9-匯總數據 9.1-聚集函數 在實際開發過程中&#xff0c;可能會遇到下面這些情況&#xff1a; 確定大于某個值的有多少行數據&#xff0c;比如游戲排行榜&#xff0c;查詢玩家排行多少名。 獲取表中某些行的和&#xff0c;比如雙十一當天&#xff0c;某個用戶總訂單價格是多少…

學習篇之React Fiber概念及原理

什么是React Fibber&#xff1f; React Fiber 是 React 框架的一種底層架構&#xff0c;為了改進 React 的渲染引擎&#xff0c;使其更加高效、靈活和可擴展。 傳統上&#xff0c;React 使用一種稱為堆棧調和遞歸算法來處理虛擬 DOM 的更新&#xff0c;這種方法在大型應用或者…

最強自動化測試框架Playwright(7)- 使用cookie避免重復登錄

playwright在稱為瀏覽器上下文的隔離環境中執行測試。這種隔離模型提高了可重復性&#xff0c;并防止了級聯測試失敗。測試可以加載現有的經過身份驗證的狀態。這消除了在每次測試中進行身份驗證的需要&#xff0c;并加快了測試執行速度。 每次測試前登錄 以下示例登錄到 Git…

談談什么是云計算?以及它的應用

作者&#xff1a;Insist-- 個人主頁&#xff1a;insist--個人主頁 作者會持續更新網絡知識和python基礎知識&#xff0c;期待你的關注 目錄 ?編輯 一、什么是云計算 二、云計算的優勢與劣勢&#xff1f; 1、云計算的優勢 ①提高資源利用率 ②提升效率 ③降低成本 2、云…

python編程基礎與案例集錦,python編程入門經典

大家好&#xff0c;本文將圍繞python編程基礎與案例集錦展開說明&#xff0c;python編程入門與案例詳解是一個很多人都想弄明白的事情&#xff0c;想搞清楚python入門程序例子需要先了解以下幾個事情。 【程序1】 題目&#xff1a;輸入一行字符&#xff0c;分別統計出其中英文字…

『CV學習筆記』Opencv和PIL Image以及base64編碼互相轉化

Opencv和PIL Image以及base64編碼互相轉化 文章目錄 一. opencv&PIL.Image&Skimage1.1. opencv-python讀取透明圖片(帶alpha通道)1.2. opencv、PIL.Image、Skimage讀取的彩色圖片維度區別1.3. opencv、PIL.Image轉換二. base64和cv2 imge互相轉換三. base64和PIL imge互…

射頻入門知識-混頻器-1

5.4混頻電路-視頻_嗶哩嗶哩_bilibili ???????

【算法題】螺旋矩陣II (求解n階Z形矩陣)

一、問題的提出 n階Z形矩陣的特點是按照之(Z)字形的方式排列元素。n階Z形矩陣是指矩陣的大小為nn&#xff0c;其中n為正整數。 題目描述 一個 n 行 n 列的螺旋(Z形)矩陣如圖1所示&#xff0c;觀察并找出填數規律。 圖1 7行7列和8行8列的螺旋(Z形)矩陣 現在給出矩陣大小 n&…

數據結構入門:棧

目錄 前言 1. 棧 1.1棧的概念及結構 1.2 棧的實現 1.2.1 棧的定義 1.2.2 棧的初始化 1.2.3 入棧 1.2.4 出棧 1.2.5 棧的元素個數 1.2.6 棧頂數據 1.2.7 棧的判空 2.棧的應用 2.1 題目一&#xff1a;括號匹配 2.1.1 思路 2.1.2 分析 2.1.3 題解 總結 前言 無論你是計算機科學專…

CVE漏洞復現-CVE-2021-22555 Linux Netfilter 權限提升漏洞

CVE-2021-22555 Linux Netfilter 權限提升漏洞 漏洞描述 近日&#xff0c;互聯網公開了Linux Netfilter權限提升漏洞的POC及EXP&#xff0c;相關CVE編號&#xff1a;CVE-2021-22555。該漏洞在kCTF中被用于攻擊kubernetes pod容器實現虛擬化逃逸&#xff0c;該漏洞已在Linux內…

用chatGPT從左右眼圖片生成點云數據

左右眼圖片 需求 需要將左右眼圖像利用視差生成三維點云數據 先問問chatGPT相關知識 進一步問有沒有現成的軟件 chatGPT提到了OpenCV&#xff0c;我們讓chatGPT用OpenCV寫一個程序來做這個事情 當然&#xff0c;代碼里面會有一些錯誤&#xff0c;chatGPT寫的代碼并不會做模…

Arduino驅動MQ2模擬煙霧傳感器(氣體傳感器篇)

目錄 1、傳感器特性 2、硬件原理圖 3、控制器和傳感器連線圖 4、驅動程序 MQ2氣體傳感器,可以很靈敏的檢測到空氣中的煙霧、液化氣、丁烷、丙烷、甲烷、酒精、氫氣等氣體,與Arduino結合使用,可以制作火災煙霧報警、液化氣、丁烷、丙烷、甲烷、酒精、氫氣氣體泄露報警等相…

面試題. 字符串壓縮

字符串壓縮。利用字符重復出現的次數&#xff0c;編寫一種方法&#xff0c;實現基本的字符串壓縮功能。比如&#xff0c;字符串aabcccccaaa會變為a2b1c5a3。若“壓縮”后的字符串沒有變短&#xff0c;則返回原先的字符串。你可以假設字符串中只包含大小寫英文字母&#xff08;a…