單點登錄

API(Application Programming Interface,應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工做機制的細節。數據庫

一、什麼是單點登錄

單點登陸(Single Sign On),簡稱爲 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只須要登陸一次就能夠訪問全部相互信任的應用系統。
 

二、單點登陸帶來的好處(表示第一遍看不懂)

使用「單點登陸」整合後,只須要登陸一次就能夠進入多個系統,而不須要從新登陸,這不只僅帶來了更好的用戶體驗,更重要的是下降了安全的風險和管理的消耗。請看下面的統計數據:
  • 提升 IT 效率:對於每 1000 個受管用戶,每用戶可節省$70K
  • 幫助臺呼叫減小至少1/3,對於 10K 員工的公司,每一年能夠節省每用戶 $75,或者合計 $648K
  • 生產力提升:每一個新員工可節省 $1K,每一個老員工可節省 $350 資料來源:Giga
  • ROI 回報:7.5 到 13 個月 資料來源:Gartner 
另外,使用「單點登陸」仍是SOA時代的需求之一。
在面向服務的架構中,服務和服務之間,程序和程序之間的通信大量存在,服務之間的安全認證是SOA應用的難點之一,應此創建「單點登陸」的系統體系可以大大簡化SOA的安全問題,提升服務之間的合做效率。
 

2、單點登陸的運行原理

一、一個簡單的運行機制

單點登陸的機制實際上是比較簡單的,用一個現實中的例子作比較。
某公園內部有許多獨立的景點,遊客能夠在各個景點門口單獨買票。
對於須要遊玩全部的景點的遊客,這種買票方式很不方便,須要在每一個景點門口排隊買票,錢包拿 進拿出的,容易丟失,很不安全。
因而絕大多數遊客選擇在大門口買一張通票(也叫套票),就能夠玩遍全部的景點而不須要從新再買票。
他們只須要在每一個景點門 口出示一下剛纔買的套票就可以被容許進入每一個獨立的景點。編程

單點登陸的機制也同樣,以下圖所示,安全


當用戶第一次訪問應用系統1的時候,由於尚未登陸,會被引導到認證系統中進行登陸(1);服務器

根據用戶提供的登陸信息,認證系統進行身份效驗,若是經過效驗,應該返回給用戶一個認證的憑據--ticket(2);架構

用戶再訪問別的應用的時候(3,5)就會將這個ticket帶上,做爲本身認證的憑據,應用系統接受到請求以後會把ticket送到認證系統進行效驗,檢查ticket的合法性(4,6)。函數

若是經過效驗,用戶就能夠在不用再次登陸的狀況下訪問應用系統2和應用系統3了。3d

二、稍微複雜一點的運行機制

從上面的視圖能夠看出,要實現SSO,須要如下主要的功能:blog

  • 全部應用系統共享一個身份認證系統。統一的認證系統是SSO的前提之一。認證系統的主要功能是將用戶的登陸信息和用戶信息庫相比較,對用戶進行登陸認證;認證成功後,認證系統應該生成統一的認證標誌(ticket),返還給用戶。
  • 另外,認證系統還應該對ticket進行效驗,判斷其有效性。全部應用系統可以識別和提取ticket信息,要實現SSO的功能,讓用戶只登陸一次,就必須讓應用系統可以識別已經登陸過的用戶。
  • 應用系統應該能對ticket進行識別和提取,經過與認證系統的通信,能自動判斷當前用戶是否登陸過,從而完成單點登陸的功能。


上面的功能只是一個很是簡單的SSO架構,在現實狀況下的SSO有着更加複雜的結構。有兩點須要指出的是:接口

  • 單一的用戶信息數據庫並非必須的,有許多系統不能將全部的用戶信息都集中存儲,應該容許用戶信息放置在不一樣的存儲中。事實上,只要統一認證系統,統一ticket的產生和校驗,不管用戶信息存儲在什麼地方,都能實現單點登陸



  • 統一的認證系統並非說只有單個的認證服務器,以下圖所示,整個系統能夠存在兩個以上的認證服務器,這些服務器甚至能夠是不一樣的產品。認證服務器之間要經過標準的通信協議,互相交換認證信息,就能完成更高級別的單點登陸。以下圖,當用戶在訪問應用系統1時,由第一個認證服務器進行認證後,獲得由此服務器產生的ticket。當他訪問應用系統4的時候,認證服務器2可以識別此ticket是由第一個服務器產生的,經過認證服務器之間標準的通信協議(例如SAML)來交換認證信息,仍然可以完成SSO的功能

 

相關文章
相關標籤/搜索