[Software Architecture]簡述Single-Sign-On(單一登入)

[Software Architecture]簡述Single-Sign-On(單一登入)

近幾年來系統整合的議題日漸盛行,與系統整合相關的議題多如牛毛,我們先簡單將系統整合方式分成幾種:

  • 資料整合:兩系統間透過資料的交換來做溝通
  • 流程整合:兩系統間可能透過某種機制來進行兩系統間的服務交替
  • UI整合:A系統將B系統的畫面嵌入,可在一個頁面上看到兩個系統的狀況

原則上整合的類型大概脫離不開以上三大類。

 

在解釋Single-Sign-On前我們先看看以下這個案例:

有家傳統產業公司,公司內部有A、B、C、D四套舊系統,分別是ERP、CRM、電子表單、HR,而這四套系統因為引進的時間不同,負責導入的人員也不同,我們知道系統導入時,如果主事者沒有特別的想法,做決策的往往就是PM了,而很巧的,這四個系統負責的PM都不同,彼此之間也沒有太多共識,導致出現一些很有趣的現象:

  • ERP跟HR的帳號管理是用員工代號(EX:9527)
  • 電子表單的帳號管理是用Mail名稱(EX:gipi)
  • CRM的帳號管理是由user自行申請,所以沒有邏輯

上頭這些系統目前由MIS人員小張負責維護,一直以來也相安無事,某天老闆突然跑出來說:小張,我忘記我ERP的系統帳號是要打工號還是Mail名稱了,我輸入三次後帳號被鎖了,幫忙處理一下。小張不敢怠慢馬上去處理了。

小張說:老闆,沒問題了,ERP要輸入員工代號才可以登入喔。

老闆說:好的,我說小張阿,我剛剛想到一件事,我們這麼多套系統,每個都要記一組帳號,有沒有機會改成同一組帳號可以進入多個系統啊?

小張想了想,回答老闆說:老闆,如果要做到這些東西,可能有以下幾點需要進行:

  • 重建每個系統帳號
  • 將舊帳號資料移轉給新帳號
  • 重新設定每個系統的使用者權限

老闆左思右想,說道:有沒有比較單純的做法阿,這樣做感覺風險很高,我的要求很簡單,只要做到同一個帳號可以登入多個系統就好了。

小張回說:請給我一些時間思考,我再找技術單位的主管小九討論看看。

小張前往找小九詢問這個問題,小九聽完後眉頭一皺,認為這件事情並不單純,小九說:請聽我娓娓道來.....

===================現實分隔線=====================

上頭是一個寫實的狀況,單一帳號、單一登入的概念為何會興起?上面的考量其實是一個蠻重要的原因,下頭我們來說明一下Single-Sign-On的架構如何解決上頭的問題:

  • 帳號同步

帳號同步依以上小張的思考模式,必須要做三項資料調整,但不管怎麼看,這種異動資料的風險性實在太高了,在理想的Single-Sign-On架構下,應該要提供『帳號對應』(ID Mapping)的功能,我們用以下的表來說明:

image

我們舉兩個帳號Jimmy/John來做說明,SSO架構一般需要建立這樣一份帳號對應,由SSO系統帳號做驗證後,分別取得其他系統對應的帳號,使用者使用這些系統時,就已SSO系統對應出來的使用者代號直接進入系統,通過此架構,我們可以不用異動到既有資料,只要在每個系統加入取得SSO系統回傳回來的認證資訊的Code即可。

這邊我們可以先簡單分成兩種架構

《只做帳號同步管理》

image

所有的登入全都透過SSO Server來進行,登入ERP跟CRM時都以Jimmy作為登入帳號,但經過ID Mapping後傳送給各系統的帳號是不同的。

《做到只需輸入一次帳號》

image

這個架構就相對複雜得多,我們可以看一下上面這張圖:

1.使用者嘗試進入ERP系統

2.因為使用單一登入,使用者的request被導到SSO Server上

3.SSO Server要求使用者輸入帳號密碼

4.使用者輸入正確帳號密碼

5.SSO Server將Mapping好的ID回傳給ERP系統進行登入(完成ERP系統登入),同時將使用者登入的資訊記錄下來

6.使用者嘗試進入CRM系統

7.因為使用單一登入,使用者的request被導到SSO Server上

8.SSO Server判斷該使用者仍活著,直接進行IE Mapping,並登入CRM系統

這兩種方法不大相同,後面這種做法在實務上比較漂亮,但前一種方法則相對簡單很多。

 

  • Single-Sign-Off

有了Single-Sign-On,自然也有所謂的Single-Sign-Off囉,當我們透過SSO登入系統後,我們可能在眾多系統中都留有我們登入的資訊,如果要一個系統一個系統做登出,那也太麻煩了點,所以Single-Sign-Off架構的目的就是在SSO Server做登出後,所有的系統要一併被登出囉,這邊沒有特別的架構圖,因為就只是單純呼叫個系統的登出功能。

上頭大致上是在架構SSO時的一些思路。

 

===================現實分隔線=====================

小張請教完小九後,信心滿滿的去找老闆。

小張說:#$%#$%#$,小九三天之內,一成功力就可完成,放心。

這時的小九:image (誰在說我壞話...??)

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。