隨著重視資安的趨勢,越來越多客戶接受使用 VMware 的 VDI 及 UEM 解決方案。這時候整合企業原先既有的登入方式(或習慣)就能讓企業員工有更好的使用體驗,IT管理人員也能減少被問問題的麻煩,專心投入生產力目標,串接一次,適用一生。

加上現在使用的軟體跟系統真的是越來越多,密碼可能有上百組,如果能夠只用一個方式、一組帳號密碼,又安全又簡單的登入,對個人、對企業絕對大歡迎。所以除了大規模應用的OTP簡訊認證,現在也開始流行 Passwordless 的2FA、MFA、Biometric、FIDO 等等的 Single-Sign-on 解決方式。

而現在最常運用到 SSO 身份識別跟授權的傳輸協定就是—— SAML !
SAML 是基於 xml 的開源標準來進行身份驗證跟授權的傳輸協定,有三種角色:

  1. idp: 身份驗證商 Identity Provider
  2. principal: 也就是我們的使用者 User
  3. sp: 服務提供商 Service Provider

簡單來說就是 idp & sp 會透過透過 SAML 格式來交換包含憑證的參數,互相認識對方,也認定對方,User 就能享受到 SSO 好處。上述提到的各種 MFA, FIDO 國際協定也經常運用 SAML ,VMware 現在產品與產品間的身份認證,也都是用 SAML 來進行傳輸。而 EUC 系列產品 Horizon(VDI) 與 Workspace ONE 等,也都允許自行利用 SAML 串接,並且可以同時擔綱 idp 或 sp 的角色。

最近遇到很多客戶狀況是,他們可能原本就有既有的身份認證系統(像是Okta, Azure MFA, ISV’s OTP),想直接用在單一登入VMware 終端設備場景,例如直接登入後給我指定虛擬桌面、或是登入後允許我進受到VPN 控管的 Tunnel apps等。

本文將依上述情境應用 SAML ,實作 SSO 串接:


/ 環境準備 /

僅需兩樣:

  1. 一台 WS1 Access 跟 administrator 帳號 (SaaS/On-prem都行)
  2. 一個有 Java 1.6+ 跟 Maven 環境

VMware 用於客製化 SSO 解決方案的元件為 Workspace ONE Access (WS1 Access),前身叫做vIDM (VMware Identity Manager)。此元件在許多產品都有附贈,遇過很多情況都只是當初導入時沒有順便裝起來而已。安裝資源的要求也超級輕,詳細可參考: 官方文件
在這個例子下 WS1 Access 的角色是 sp。

簡易的範例程式碼是以 java 寫的,大家可以去 這邊 拿來玩。

紀錄一下這次的環境: openjdk 11.0.11 / Apache Maven 3.6.0

/ 設定 Workspace ONE Access /

Step 1:進入後台

首先就是登入到 WS1 Access 的管理後台,照順序選 “Identity Manager” –> “Identity Providers” –> “Add Identity Provider” –> “Create Third Party IDP”.
Pic 1: VMware workspace one sso
(這邊是 20.10 版本的畫面,不同版本只會有按鈕的些許差異而已,功能都有的)

Step 2:新增IdP

2-1

先幫這個idp 取名字,如果你串第三方產品就可以寫那個產品的名稱:

2-2

貼上idp 都提供進行交換的SAML metadata,第三方產品都會寫好相關的xml,自行開發的可以參考下範例程式碼,放在 webapp 資料夾下的 idp.xml:

2-3

全部貼上去後按下”Process IdP Metadata”,下面就會直接帶出對應的參數了,簡單方便。這次的登入介面簡單的利用WS1 Access 內建的userName / Password 來用,下面都先不調整。

2-4

針對要授權使用這個IdP的網路,我環境只有ALL,勾起來。
下面的話命名Auth Methods 為myAuth,憑證部分此code 使用的是X509,選起來按新增。

2-5

這頁的最後一步,這邊就是 WS1 產出的 SP Metadata ,用來給 idp 進行交換,拿到這個 xml 的連結後,按”Add” 完成建立IdP。

Step 3:設定 Policiy

3-1

換到 “Identity Manager” –> “Policies” –> “Edit Default Policy”
我的環境比較簡單,實際應用的話就選擇需要利用額外IdP登入的那則 Policy 就好。

這邊可以看到 WS1 Access 最強功能–以 policy based 來去規範說用什麼認證方式才能登入到什麼樣的網段、使用什麼樣的應用程式,例如一般利用瀏覽器走FIDO啦、Win 10 的話要插 smart card啦、不允許使用 Android 設備登入啦,或是限制在上班時間8小時或是可以一個禮拜居家辦公後才 expired等等,對資安嚴謹的公司來說只要在這個 portal 上面設定規則,就能依照業務上的使用情境來去做登入的控管。串接登入習觀資料到Intelligence 的AI上面,依照既有習慣偵測不安全登入行為,也是靠著這些rule 來拒絕,保持萬無一失的登入的。

3-2

接著選擇 “Configuration” –> “ADD POLICY RULE”

3-3

如果是既有規則基本上 range & device type 不用動,這邊允許全部,注意最下面的認證方式要選我們2-4新增的驗證規則,接著按”SAVE”

3-4

回到Configuration後,注意把我們新的驗證模式拉到最前面,讓他的變成第一個驗證的權重,設定就完成囉!串完啦~ 。:.゚ヽ(*´∀`)ノ゚.:。

/ demo /

歡迎直接參考我的懶人指令包完成展示:

1
2
3
4
5
$ git clone https://github.com/vmware/vidm-saml-toolkit.git
$ cd vidm-saml-toolkit
$ mvn clean install
$ cd Sample_AuthServer
$ mvn compile exec:java

原本的登入方式就是WS1的介面:

現在就可以客製成你想要的登入模樣啦!


以上就是本次的分享 (ˇωˇ人)