第三章、 研究方法: 系統設計與架構
3、 混合雲帳號整合
3.3 帳號對應表
在帳號對應表中,每一筆紀錄即表示某位使用者的帳號對應關係,紀錄中的 內容包含系統帳號、行動電話、系統權杖(Token)、二階段手機驗證啟用狀態與 各端對應帳號內容,而各端對應帳號內容,又再包含各端的帳號、密碼與存取權 杖(Token 或 Ticket)。系統以 MongoDB Document 的方式進行儲存,表示某位使 用者帳號對應的關係,如(圖二十四)。
其中,在一次性帳號對應所產生之帳號對應表中,系統權杖與各雲端存取權 杖之值仍為 null,必須等到使用者進行單一登入後,系統才會取得各雲端的存取 權杖及產生系統權杖,並記錄於帳號對應表中。
圖 二十四:帳號對應表(一次性帳號對應)
( 2 ). 與系統帳號目錄之關聯
在 本 系 統 中 , 作 為 使 用 者 唯 一 識 別 的 系 統 帳 號 與 密 碼 , 主 要 儲 存 於 OpenLDAP 中,而 OpenLDAP 與儲存於 MongoDB 的帳號對應表之間的關聯,如 (圖二十五)所示。
圖 二十五:帳號對應表與系統帳號目錄之關聯
4、 混合雲單一登入
本節將介紹驗證系統之帳號驗證模組,其單一登入機制的設計。
( 1 ). 單一登入
對使用者而言,從登入系統到進入使用者管理介面所涉及的流程與步驟,將 根據使用者為首次或再次登入而有所不同,以 UML 活動圖(Activity Diagram)表 示如下: (圖二十六)
圖 二十六:單一登入機制流程圖
以下分別依序介紹 UML 活動圖中動作(Action)的部分,如: 帳號驗證、二階 段手機驗證、各雲端單一登入。(圖二十六)
( 2 ). 帳號驗證
使用者進入系統登入頁面,以系統帳號(Primary Account)或各端已認領帳號 作登入,系統將根據使用者提供帳號類型而有不同的帳號驗證方式,如下:
(1). 系統帳號
當使用者輸入系統帳號與密碼進行登入,系統將於帳號對應表中,查詢 該 系 統 帳 號 是 否 存 在 , 若 存 在 則 將 系 統 帳 號 與 密 碼 傳 送 到 Identity Server(Keystone)進行 user/password 驗證,並將通過驗證所返回的系統 Token 儲存於帳號對應表(圖二十七)中。 (圖二十七)
圖 二十七:系統帳號驗證流程示意圖 (2). 各端已認領帳號
當使用者輸入任一已認領之雲端及本地端帳號進行登入,系統將檢驗帳 號對應表中,該端帳號是否存在且密碼是否吻合。若檢驗成功,則藉由帳號 對應關係,取得作為該使用者唯一識別的系統帳號,並將系統帳號傳送到 Identity Server(Keystone)進行外部驗證(External Authentication),並將通過驗 證所返回的系統 Token 儲存於帳號對應表(圖二十九)中。 (圖二十八)
圖 二十八:各端已認領帳號驗證示意圖
圖 二十九:帳號對應表(帳號驗證)
( 3 ). 二階段手機驗證
當使用者通過帳號驗證後,若使用者有啟用二階段手機驗證之功能時,系統 將使用者導向二階段手機驗證頁面,並根據使用者於註冊時所提供之行動電話,
透過發送簡訊的方式傳送驗證碼,進行手機驗證來再次確認使用者的身分。而使 用者必須在有限的時間內,輸入該驗證碼進行驗證,若驗證成功,則使用者被導 向混合雲單一登入頁面,進行下一階段之各雲端單一登入。
( 4 ). 各雲端單一登入
使用者進入混合雲單一登入頁面,選擇一個或多個(單選/多選)欲登入的雲端,
而系統將依據該雲端帳號認領與否,而有不同的運作流程如下:
(1). 已認領
雲端帳號已認領,即表示使用者於註冊時,已提供該雲端帳號與密碼作 認領。因此,若使用者選擇一個或多個已認領雲端進行登入,系統將利用帳 號 對 應 表 中 紀 錄 的 各 雲 端 帳 號 與 密 碼 , 透 過 網 頁 自 動 化 的 方 式 (Web Automation),於伺服器端以程式去控制 Headless Browser,並遵循 OpenID Connect 機制來模擬使用者於公有雲驗證頁面進行登入,以及公有雲資源授
權同意的行為,或直接透過私有雲驗證介面(API)進行驗證,來完成多個雲 的單一登入,並將取回之各雲端 Token 儲存於帳號對應表(圖三十二)中。
此 外 , 本 系 統 以 非 同 步 模 式 (Asynchronous) 同 時 啟 動 多 個 執 行 緒 (Multithreading),每個 thread 負責登入一個雲。(圖三十)
圖 三十:各雲端單一登入(帳號已認領) (2). 未認領
雲端帳號未認領,即表示使用者於註冊時,未提供該雲端帳號與密碼作 認領。若使用者選擇一個或多個未認領雲端進行登入,系統將透過 OpenID Connect 機制把使用者導向公有雲驗證頁面進行登入,或由系統跳出登入框 讓使用者登入私有雲,來完成多個雲的登入,並將取回之各端 Token 儲存於 帳號對應表(圖三十二)中。(圖三十一)
圖 三十一:各雲端登入(帳號未認領)
圖 三十二:帳號對應表(各雲端單一登入)