SSO統一身份認證
SSO統一身份認證
- sso身份認證是什麼?
sso身份認證,不在本系統中登入,跳轉到第三方系統進行登入,登入後,再攜帶登入的使用者資訊在本系統中進行登入。
需要知道的是,本系統,與sso server相比,是作為sso client的。
例子:
整個過程很像,在一個系統中,用qq或者微信賬號進行登入,登入時,會彈出qq輸入賬戶密碼的頁面,qq登入認證成功後,返回本系統。
2.sso認證登入的過程
1)攔截T系統的所有頁面,檢查session中是否含有使用者資訊(術語有的稱之為,使用者未認證,需要sso server認證)
2)使用者未認證,則直接跳轉到sso server(第三方系統),這時候,一般是攜帶一個url的(這個url以為會是currentPage或者index頁面)
3)sso server驗證使用者資訊
sso驗證過程是不用我們操心的,我們只需要關心得到的返回的結果就ok了,比如,qq驗證賬號密碼是否正確,整個過程我們是看不到的,作為sso client一方,也不用我們關心,我們只需要拿到qq驗證的結果(true or false)
4)sso server返回資料
sso server返回資料,一般是不會直接返回結果的,一般會返回一個token,也有的是ticket,即,身份證明。該身份證明是一次性的,我們利用token,呼叫sso server 的遠端介面(SSO Server API
5)SSO Server API,一般會有兩個介面,第一個用於獲取令牌,第二個利用令牌,加上token,得到使用者資訊
- 獲取令牌
通過post/get,向介面傳送資料,得到返回值,返回值一般會包含三個東西:access_token(得到使用者資訊的介面的api中需要的引數)issucc(是否成功)expires_in(令牌過期時間,從當前時間開始多少秒後過期)
- 得到使用者資訊
通過post/get,向介面傳送資料,得到返回值,返回值一般包含三個東西;
欄位名 |
引數說明 |
error_description |
錯誤資訊 |
succeeded |
是否成功 |
user_login_name |
使用者賬號 |
6)sso登出
本系統在登出相關session和cookie的同時,向sso登出介面傳送post/get請求,登出訪問。