JEESZ-SSO解決方案

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

第一節:單點登錄簡介

第一步:了解單點登錄

SSO主要特點是: SSO應用之間使用Web協議(如HTTPS),并且只有一個登錄入口.

SSO的體系中有下面三種角色:

1) User(多個)

2) Web應用(多個)

3) SSO認證中心(一個)

SSO實現包含以下三個原則:

1)所有的登錄都在SSO認證中心進行。

2) SSO認證中心通過一些方法來告訴Web應用當前訪問用戶究竟是不是通過認證的用戶.

3) SSO認證中心和所有的Web應用建立一種信任關系.

CAS的基本原理CAS(Central Authentication Service)是Yale耶魯大學發起的構建Web SSO的Java開源項目。

1.CAS術語解釋:

SSO-Single Sign On單點登錄

TGT-Ticket Granting Ticket用戶身份認證憑證票據

ST-Service Ticket服務許可憑證票據

TGC-Ticket Granting Cookie存放用戶身份認證憑證票據的cookie.

第二步:了解單點登錄體系結構

1)CAS Server負責完成對用戶信息的認證,需要單獨部署,CAS Server會處理用戶名/密碼等憑證(Credentials).

2)CAS Client部署在客戶端,當有對本地Web應用受保護資源的訪問請求,并且需要對請求方進行身份認證,重定向到CAS Server進行認證.

第三步:單點登錄環境準備工作

1)cas-server-3.5.0-release.zip(CAS服務端)

2)cas-client-3.3.3-release.zip(CAS客戶端)

3)apache-tomcat-7.0.40

4)cas-client-core-3.2.1.jar

5)cas-server-core-3.5.0.jar

6)cas-server-support-jdbc-3.5.0.jar

第二節:單點登錄環境搭建與部署

第一步:環境部署

1.通過Java JDK生成證書三部曲

證書對于實現此單點登錄非常之重要,證書是服務器端和客戶端安全通信的憑證,本教程只是演示,所有用了JDK自帶的證書生成工具keytool。

當然在實際項目中你可以到專門的證書認證中心購買證書。

使用JDK自帶的keytool生成證書

第一步生成證書:

keytool -genkey -alias mycacerts -keyalg RSA -keystore C:/common/keys/keycard

注意:輸入相關信息用于生成證書.其中名字與姓氏這一最好寫你的域名,如果在單擊測試你可以在C:\Windows\System32\drivers\etc\hosts文件中映射一個虛擬域名,

注意不要寫IP。

第二步導出證書:

keytool -export -file C:/common/keys/keycard.crt -alias mycacerts -keystoreC:/common/keys/keycard

第三步導入到JDK安裝目錄證書:

keytool -import -keystore C:/"ProgramFiles"/Java/jdk1.6.0_32/jre/lib/security/cacerts -fileC:/common/keys/keycard.crt -alias mycacerts

2.解壓cas-server-3.5.0-release.zip文件,

在cas-server-3.5.0-release\cas-server-3.5.0\modules目錄下找到cas-server-webapp-3.5.0.war文件并命名為cas.war,并復制到在Tomcat根目錄的webapps目錄下,

如下圖:

3.修改host文件(C:\Windows\System32\drivers\etc)hosts文件中添加添加以下配置

127.0.0.1???????? jeesz.cn (配置自己的域名.)

注意:如果想在一臺PC機上模擬這個單點登錄,就必須域名重定向,如果是多臺PC機,可以不配置此項,下文有用到?fast-web.cn,可以用相應PC機的IP代替

4.修改Tomcat文件下的server.xml(apache-tomcat-7.0.40\conf\server.xml)添加以下內容:

在server.xml文件中把

maxThreads="150" scheme="https"secure="true"

clientAuth="false" sslProtocol="TLS" />

修改成如下:

port="8443"

protocol="org.apache.coyote.http11.Http11Protocol"

maxThreads="150"

SSLEnabled="true"

scheme="https"

secure="true"

clientAuth="false"

sslProtocol="TLS"

keystoreFile="C:/common/keys/keycard"

keystorePass="xxxxxx "

ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA"

/>

5.啟動Tomcat服務,查看信息,(如果有報錯,可以根據信息查找錯誤),打開瀏覽器,輸入?jeesz.cn:8080/cas如果出現以下界面,則代表CAS服務端配置成功。

注:這個是最簡單的CAS服務,只要輸入的用戶名跟密碼一樣,就可以正常登陸,在我們實際開發中,這個驗證因為跟數據庫作比較,接下來,我們就配置數據庫校驗。

第二步:配置數據庫驗證

1.在apache-tomcat-7.0.2\webapps\cas\WEB-INF目錄下找到deployerConfigContext.xml文件,找到如下代碼:

?

添加下面代碼:

這里sql屬性是從user表中根據cas登陸名查找密碼-->

2.增加數據源dataSource,

在deployerConfigContext.xml,(跟上面同一個文件)找到

,在下面添加如下代碼:

com.mysql.jdbc.Driver

jdbc:mysql://127.0.0.1:3306/sso根據自己的數據庫URL地址-->

root根據自己的數據庫用戶名-->

根據自己的數據庫密碼-->

3.數據庫添加用戶表及數據(這里用的mysql),比如在mysql數據庫中有t_user表

4.增加jar包,cas-client-core-3.2.1.jar、cas-server-core-3.5.0.jar、cas-server-support-jdbc-3.5.0.jar包拷貝到apache-tomcat-7.0.2\webapps\cas\WEB-INF\lib目錄下。

5.重啟Tomcat,打開瀏覽器,輸入? jeesz.cn:8080/,輸入數據庫里的用戶名和密碼,如果出現如下界面,則配置成功。

現在我們的CAS服務端已經配置好了,接下來,我們配置客戶端

第二節:配置自己的Web工程(客戶端)

1.在host文件下,添加如下代碼:

127.0.0.1????????? www.sso1.com

127.0.0.1 ? ? ? ?www.sso2.com

注意:這個網址最好不要用互聯網已經存在的域名,否則你將無法訪問該地址。

如果想在一臺PC機上模擬這個單點登錄,就必須域名重定向,如果是多臺PC機,可以不配置此項,下文有用到www.sso1.com,www.sso2.com,可以用相應PC機的IP代替

1.在Tomcat根目錄下創建一個sso1,sso2目錄。如下如:

2在eclipse新建兩個web工程,分別為sso1,sso2。

3在自己的Web工程里加入cas-client-core.jar,commons-logging-1.1.jar,(解壓cas-client-3.2.0-release.zip,在cas-client-3.2.0-release.zip\cas-client-3.2.0\modules,找到該JAR包)分別加入到sso1,sso2工程的lib里。

轉載于:https://my.oschina.net/u/3873725/blog/1921853

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

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

相關文章

女朋友天天氣我怎么辦_關于我的天氣很奇怪

女朋友天天氣我怎么辦帶有扭曲的天氣應用 (A Weather App with a Twist) Is My Weather Weird?? is a weather app with a twist — it offers a simple answer to a common question we’ve all asked. To do this we look at how often weather like today’s used to happ…

Java中length,length(),size()的區別

(一)區別: ①length:用于算出數組的長度。 ②length():用于找出字符串的長度。 ③size():用于找出泛型集合的元素個數。轉載于:https://www.cnblogs.com/not-…

5895. 獲取單值網格的最小操作數

5895. 獲取單值網格的最小操作數 給你一支股票價格的數據流。數據流中每一條記錄包含一個 時間戳 和該時間點股票對應的 價格 。 不巧的是,由于股票市場內在的波動性,股票價格記錄可能不是按時間順序到來的。某些情況下,有的記錄可能是錯的…

為什么要用Redis

最近閱讀了《Redis開發與運維》,非常不錯。這里對書中的知識整理一下,方便自己回顧一下Redis的整個體系,來對相關知識點查漏補缺。我按照五點把書中的內容進行一下整理:為什么要選擇Redis:介紹Redis的使用場景與使用Re…

第一次馬拉松_成為數據科學家是一場馬拉松而不是短跑

第一次馬拉松Since Data Science became the “Sexiest Job of the 21st Century” the interest in the field has grown tremendously. With it so have the courses available to gain the necessary knowledge. As great as this is, the downside is a field marketed as …

273. 整數轉換英文表示

273. 整數轉換英文表示 將非負整數 num 轉換為其對應的英文表示。 示例 1:輸入:num 123 輸出:"One Hundred Twenty Three" 示例 2:輸入:num 12345 輸出:"Twelve Thousand Three Hundred…

Java-運算符

算術運算符 加法 相加運算符兩側的值- 減法 左操作數減去右操作數* 乘法 相乘操作符兩側的值/ 除法 左操作數除以右操作數(int類型的數相除時,會得到int類型的值,如果結果有小數,則小數部分會被舍棄)% 模余運算&…

區塊鏈開發公司談區塊鏈在商業上的應用

對于近期正受科技界和資本市場關注的區塊鏈行業,一句話概括說如果互聯網技術解決的是通訊問題的話,區塊鏈技術解決的是信任問題,其在商業領域應用如何呢?我們來從兩個方面去進行剖析。 第一方面,區塊鏈技術可以解決基礎…

ORACLE1.21 PLSQL 01

-- 有了SQL 為什么還需要PL/SQL -- SQL功能很強大,但如果是單1sql語句,沒有流程控制 -- PL/SQL 是什么? --不僅僅實現流程控制,同時保留SQL本身所有的功能 --還提供變量、常量等支持 --提供更多數據類型的支持 --第一,…

云原生數據庫_數據標簽競賽云原生地理空間沖刺

云原生數據庫STAC specification is getting closer to the ver 1.0 milestone, and as such the first virtual Cloud Native Geospatial Sprint is being organized next week. An outreach day is planned on Sep 8th with a series of talks and tutorials for everyone. R…

Linux 下的 hosts文件

2019獨角獸企業重金招聘Python工程師標準>>> hosts 文件 目錄在 /etc/hosts netstat -ntlp //linux 下查看端口 轉載于:https://my.oschina.net/u/2494575/blog/1923074

412. Fizz Buzz

412. Fizz Buzz 給你一個整數 n ,找出從 1 到 n 各個整數的 Fizz Buzz 表示,并用字符串數組 answer(下標從 1 開始)返回結果,其中: answer[i] “FizzBuzz” 如果 i 同時是 3 和 5 的倍數。answer[i] “…

DjangoORM字段介紹

轉載于:https://www.cnblogs.com/cansun/p/8647371.html

黑客獨角獸_雙獨角獸

黑客獨角獸Preface前言 Last week my friend and colleague Srivastan Srivsan’s note on LinkedIn about Mathematics and Data Science opened an excellent discussion. Well, it is not something new; there were debates in the tech domain such as vim v.s emacs to …

38. 外觀數列

38. 外觀數列 給定一個正整數 n ,輸出外觀數列的第 n 項。 「外觀數列」是一個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。 你可以將其視作是由遞歸公式定義的數字字符串序列: countAndSay(1) “1”countAnd…

JavaScript進階(一)--執行上下文

在下工科生一枚,自認為文筆爛大街!本著總結JavaScript原理知識,提升自我寫作水平的目的,提筆寫下這幾篇文章,噴子們高抬貴手?。寫作過程中本系列過程中,我會盡快寫完全部內容,再回過頭來優化補…

Lab1

1.導入 JUnit,Hamcrest Project -> Properites -> Java Build Path -> Add External JARs 2. 安裝 Eclemma Help -> Eclipse marketplace 搜索 Eclemma,點擊Installed 3. 測試代碼 TrianglePractice: public class TrianglePract…

抽象類細分舉行_什么是用聚類技術聚類的客戶細分

抽象類細分舉行This content was originally posted in Spanish here https://blogs.solidq.com/es/poder-del-dato/que-es-el-clustering-segmenta-a-tus-clientes-con-machine-learning/此內容最初以西班牙語發布在此處https://blogs.solidq.com/es/poder-del-dato/que-es-el…

551. Student Attendance Record I 從字符串判斷學生考勤

[抄題]: You are given a string representing an attendance record for a student. The record only contains the following three characters: A : Absent. L : Late.P : Present. A student could be rewarded if his attendance record…

使用deploy命令上傳jar到私有倉庫

打開cmd命令提示符,mvn install是將jar包安裝到本地庫,mvn deploy是將jar包上傳到遠程server,install和deploy都會先自行bulid編譯檢查,如果確認jar包沒有問題,可以使用-Dmaven.test.skiptrue參數跳過編譯和測試。 全命…