單點登入系統 SSO 總結

2022-03-07 16:25:19 字數 1187 閱讀 5567

其實就是統一使用者管理平台,如今各種系統數不勝數,這就難免需要使用者名稱和密碼登入,但是賬戶越多越容易忘記,而且每次訪問需要登入還很麻煩,所以單點登入系統應運而生,這也是我上班的第乙個任務-利用公司現有的sso伺服器來配置客戶端開發使用者登入介面從而和別的公司對接。

起初我還以為是做外包的,認為i很簡單啊,不就是要實現乙個使用者登入驗證之後再來個重定向嗎,於是自己回顧一下之前的最最原始的mvc模式,把基本功能實現之後最後在加上個頁面重定向到目標位址,蠻有「成就感」的給經理看看。 結局就是做的全是無用功,重新來過,應該是基於公司已有的sso伺服器來開發,於是乎,漫長的摸索單點登入系統的道路開始了。。。

在網上也看了很多的資料,較為粗略的看了下原理:

1. sso伺服器的處理大致流程就是:使用者在a客戶端登入---->sso伺服器驗證使用者資訊---->驗證成功後在sso伺服器端會記下乙個tgc(ticket granted cookie)票據而且返回到a客戶端時還帶有乙個ticket引數(它是唯一,不可偽造的引數),在a客戶端拿到 service 和新產生的 ticket 過後,與 sso伺服器進行身份核實,以確保 service和ticket 的合法性---->退出登陸時,會向sso伺服器傳送logout請求(清除session),之後sso伺服器會廣播到其他應用伺服器的logout(清除session)。

下面拿我做過的案例來說:

例如原始應用的**是http://localhost:8080/cas-client/,在這個客戶端登入頁面裡form表單包含登入使用者名稱和密碼,一開始有如下語句,轉向cas伺服器的單點登入頁面

sso伺服器完成主體認證後,會使用下面url進行重定向http://localhost:8080/cas-client/?ticket= st-2-7fahvdq0rydqxhfbikkgfycrcoshrtsfz2w-20。 收到ticket之後,應用程式需要驗證ticket。這是通過將ticket 傳遞給乙個校驗url來實現的。校驗url也是sso伺服器提供的。

sso伺服器通過校驗路徑獲得了ticket之後,通過內部的資料庫對其進行判斷。如果判斷是有效性,則返回乙個netid給應用程式。 隨後cas將ticket作廢,並且在客戶端留下乙個cookie。

以後其他應用程式就使用這個cookie進行認證(當然通過cas的客戶端),而不再需要輸入使用者名稱和密碼。 

單點登入(SSO)系統的總結

前些天一位其他開發部門的同事找到我們了解一些關於sso單點登入的事,他們要做單點登入,同時也需要和我們這邊的系統做整合,要我幫忙做一單點登入,了解關於單點登入的解決方案和資料,雖然做單點登入已經很久了,自以為對sso系統也算比較了解。但是被他這麼一問,反倒是一下講不清楚,所以總結一下目前正在使用的s...

單點登入(SSO)系統的總結

前些天一位其他開發部門的同事找到我們了解一些關於sso單點登入的事,他們要做單點登入,同時也需要和我們這邊的系統做整合,要我幫忙做一單點登入,了解關於單點登入的解決方案和資料,雖然做單點登入已經很久了,自以為對sso系統也算比較了解。但是被他這麼一問,反倒是一下講不清楚,所以總結一下目前正在使用的s...

單點登入(SSO)系統的總結

前些天一位其他開發部門的同事找到我們了解一些關於sso單點登入的事,他們要做單點登入,同時也需要和我們這邊的系統做整合,要我幫忙做一單點登入,了解關於單點登入的解決方案和資料,雖然做單點登入已經很久了,自以為對sso系統也算比較了解。但是被他這麼一問,反倒是一下講不清楚,所以總結一下目前正在使用的s...