單點登陸是在多個應用系統中,用戶只須要登陸一次就能夠訪問全部相互信任的應用系統的保護資源,若用戶在某個應用系統中進行註銷登陸,全部的應用系統都不能再直接訪問保護資源,像一些知名的大型網站,如:淘寶與天貓、新浪微博與新浪博客等都用到了這個技術。web
有一個獨立的認證中心,只有認證中心才能接受用戶的用戶名和密碼等信息進行認證,其餘系統不提供登陸入口,只接受認證中心的間接受權。間接受權經過令牌實現,當用戶提供的用戶名和密碼經過認證中心認證後,認證中心會建立受權令牌,在接下來的跳轉過程當中,受權令牌做爲參數發送給各個子系統,子系統拿到令牌即獲得了受權,而後建立局部會話。api
示例:跨域
下面對上圖進行解釋:服務器
當用戶還沒進行用戶登陸的時候restful
用戶去訪問系統1的保護資源 ,系統1檢測到用戶還沒登陸,跳轉至SSO認證中心,SSO認證中心也發現用戶沒有登陸,就跳轉到用戶至認證中心的登陸頁面網站
用戶在登陸頁面提交用戶相應信息後,認證中心會校驗用戶信息,若是用戶信息正確的話認證中心就會建立與該用戶的全局會話(全局會話過時的時候,用戶就須要從新登陸了。全局會話中存的信息可能有令牌,用戶信息,及該在各個系統的一些狀況),同時建立受權令牌,而後進行下一步,不然認證中心給出提示(用戶信息有誤),待用戶再次點擊登陸的時候,再一次進行校驗用戶信息url
認證中心帶着令牌跳轉到用戶最初請求的地址(系統1),系統1拿到令牌後去SSO認證中心校驗令牌是否有效,SSO認證中心校驗令牌,若該令牌有效則進行下一步.net
註冊系統1,而後系統1使用該令牌建立和用戶的局部會話(若局部會話過時,跳轉至SSO認證中心,SSO認證中心發現用戶已經登陸,而後執行第3步),返回受保護資源設計
用戶已經經過認證中心的認證後rest
若是系統1的局部會話存在的話,當用戶去訪問系統1的保護資源時,就直接返回保護資源,不須要去認證中心驗證了
局部會話存在,全局會話必定存在;全局會話存在,局部會話不必定存在;全局會話銷燬,局部會話必須銷燬 若是在校驗令牌過程當中發現客戶端令牌和服務器端令牌不一致或者令牌過時的話,則用戶以前的登陸就過時了,用戶須要從新登陸
關於令牌可參考:基於跨域單點登陸令牌的設計與實現
在一個子系統中註銷,全局會話也會被註銷,全部子系統的會話都會被註銷
示例:
用戶向系統1發出註銷請求,系統1根據用戶與系統1創建的會話id從會話中拿到令牌,向SSO認證中心發起註銷請求,認證中心校驗令牌有效,會銷燬全局會話,同時取出此令牌註冊的系統地址,認證中心向全部註冊系統發出註銷請求,各系統收到註銷請求後銷燬局部會話,認證中心引導用戶跳轉值登陸頁面。