VPN單點登入業務系統解決方案 - 基礎篇

VPN單點登入業務系統解決方案 - 基礎篇

作者:張宗駿

華耀安全接入閘道器產品研發專家,畢業於清華大學軟體學院,擁有近20年軟體產品研發經驗。熟悉Unix系統,Web前端開發精通C語言以及各種指令碼語言。

01

方案背景

單點登入(Single Sign On,簡稱SSO)的作用是在多個應用系統中,終端使用者只需要一次登入就可以訪問所有相互信任的應用系統。SSO使使用者可以快速訪問網路,從而提高工作效率,提升使用者使用體驗。在SSL VPN的使用場景中,對於後臺業務系統的單點登入需求較為廣泛。SSO也是目前比較流行的企業業務整合的解決方案之一。

02

方案概述

華耀AG VPN閘道器的解決方案中可以提供多種接入方式,主要分為基於瀏覽器或MotionPro應用接入方式。當管理員在AG上配置並開啟SSO功能模組,無論使用者是使用瀏覽器或者使用MotionPro APP進行訪問,當用戶完成VPN認證後,能夠在歡迎頁面上看到被授權訪問的各種後臺資源;當用戶點選頁面某連結訪問對應資源(如OA系統)時,則無需再次認證,便可直接進入系統(OA系統)業務介面。

另外針對客戶環境中部署了統一的認證平臺的場景中,AG可以與統一認證平臺協同工作實現業務系統的單點登入功能,即:實現只需登入一次VPN,便可訪問VPN之後所有的應用系統,而無需多次重複登入。

03

應用場景

場景一:

七層代理訪問場景,業務系統支援Basic/NTLM認證

當業務系統的認證方式是Basic認證或NTLM認證時,管理員只需要在AG WebUI頁面或者透過命令列開啟單點登入SSO開關,AG則會自動提交登入資訊。

單點登入開啟(七層代理訪問模式):

VPN單點登入業務系統解決方案 - 基礎篇

1)使用者輸入使用者名稱密碼登入AG。

2)認證成功後,AG為使用者建立會話。

3)使用者透過AG向後臺伺服器發起請求,該伺服器需要Basic認證。

4)伺服器返回401應答,告知客戶端需要進行Basic認證。

5)AG收到此401報文後,將使用者名稱和密碼組合成 username:password 的形式,再進行base64編碼,將編碼後的值放在請求頭部的Authorization欄位中。然後向伺服器發起請求。

6)伺服器驗證使用者名稱和密碼,通過後返回該使用者可訪問的資源頁面。

7)使用者進入伺服器資源頁面,透過AG與伺服器進行資料互動。

簡單概括:單點登入開啟後,AG 模擬了終端使用者在客戶端瀏覽器的彈出視窗中輸入認證資訊並提交的過程。

方案特點:配置簡單,透過七層訪問。

場景二:

七層代理訪問場景,業務系統認證為表單格式

此場景中,業務系統支援Form表單的POST請求,在POST的資料中攜帶使用者名稱和靜態密碼或者其他靜態資料。

此場景可以透過在AG上配置SSO POST規則來實現;實現原理是,當用戶登入AG虛擬站點後,在歡迎頁面上點選業務系統連結時,AG伺服器透過HTTP POST的方式將使用者名稱和靜態密碼以及配置的其他靜態資料統一發送至業務系統,完成認證流程。

單點登入開啟(七層代理訪問模式),POST規則正確配置:

VPN單點登入業務系統解決方案 - 基礎篇

1)使用者輸入使用者名稱密碼登入AG。

2)認證成功,AG為使用者建立會話。

3)使用者透過AG向後臺伺服器發起請求,該伺服器需要認證。

4)伺服器發現使用者沒有建立會話,返回了認證頁面要求使用者認證。

5)AG檢測到認證頁面是需要進行SSO POST的頁面,則傳送表單POST請求,攜帶使用者名稱和登入AG的密碼,到指定的URL(SSO POST規則中配置)。

6)伺服器驗證使用者名稱密碼,通過後,返回資源頁面,建立使用者會話。

7)使用者進入伺服器資源頁面,透過AG與伺服器進行資料互動。

方案特點:POST請求由AG在後端傳送而不是客戶端瀏覽器傳送;透過七層訪問,請求沒有跨域。

場景三:

三層隧道訪問場景,業務系統認證為表單格式

此場景與上一個場景基本一致,唯一區別在於該場景使用的是三層隧道訪問模式。

此場景方案的實現除了需要在AG上配置SSO POST規則之外,還需在配置角色資源時選擇前端SSO。

該方案的實現原理是,當用戶登入AG虛擬站點,三層VPN隧道建立之後,在歡迎頁面上點選業務系統連結時,AG會組裝一個頁面,此頁面中會有一個表單,表單資料包含了登入AG的使用者名稱和靜態密碼以及其他需要傳輸的靜態資料。這個頁面會被重定向到客戶端,客戶端瀏覽器透過HTTP POST的方式將使用者名稱和靜態密碼以及配置的其他靜態資料一併傳送至業務系統完成認證流程。

單點登入開啟(三層隧道訪問模式),POST規則正確配置:

VPN單點登入業務系統解決方案 - 基礎篇

1)使用者輸入使用者名稱密碼登入AG。

2)認證成功後,AG為使用者建立會話,同時啟動三層VPN隧道。

3)使用者透過AG向後臺伺服器發起請求,該伺服器需要認證。

【注意】後臺伺服器的URL連結是顯示在AG的歡迎頁面上,此URL是按照某種特定的格式進行了拼裝,使用者在頁面上點選該連結訪問時,AG會進行特殊處理。

4)AG檢測到該請求是需要進行SSO POST的頁面,則組裝一個動態的HTML頁面,將真實的後臺伺服器URL、使用者名稱和密碼欄位封裝在Form表單中,並使用Javascript程式碼讓表單自動提交。AG將此HTML頁面重定向到客戶端瀏覽器。

5)瀏覽器傳送表單POST請求,攜帶使用者名稱和登入AG的密碼,到指定的URL。

6)伺服器驗證使用者名稱密碼,通過後,返回資源頁面,建立使用者會話。

7)使用者進入伺服器資源頁面,與伺服器直接進行資料互動。

此場景特點:POST請求由客戶端瀏覽器傳送;透過三層訪問,請求跨域。

以上就是單點登入需求中最為簡單的幾個場景,配置簡單,但是由於現在客戶業務系統的複雜性的提高以及安全性的增強,這幾種場景已經很難滿足最新的客戶單點需求。我們會在接下來的文章中深入的介紹更復雜更完善的單點登入實現方案。

下篇預告:AG單點登入業務系統解決方案 - 中級篇