使用 Google 進行 Captive Portal 認證

選項
Zyxel_Kenny
Zyxel_Kenny 文章數: 126 image  Zyxel Employee
First Comment Friend Collector Fifth Anniversary
已編輯 Jan 22 日 防火牆 常見問題

這篇文章說明如何在 USG FLEX H 系列防火牆上,使用 Google (OIDC) 來設定 Captive Portal 認證。內容涵蓋在 Google Workspace/Cloud 註冊應用程式的步驟,以及啟用 OIDC 認證所需的防火牆設定,讓使用者能直接使用現有的 Google 帳號登入,無須另外管理本機憑證。

image.png

開始之前

在開始之前,請確保您已具備以下條件:

  • 有效的身分提供者授權 (Google Workspace/Cloud)。
  • 您的裝置與 Google Workspace/Cloud 之間的網路連線暢通。
  • 已正確設定 SSL 憑證。
  • 防火牆具備 DNS 與 HTTPS 存取權限。
  • FQDN1:用於 OIDC 重新導向位址 (Redirect Address),需解析為您的 WAN IP。
  • FQDN2:用於 Captive Portal 伺服器,需解析為您的 Captive Portal 伺服器位址 (預設為 6.6.6.6)。
  • 憑證必須由受信任的 CA (憑證授權單位) 簽發。
  • 憑證的 Common Name (CN) 與 SAN (Subject Alternative Name) 必須包含上述兩個 FQDN。

Captive Portal 使用 HTTPS 來保護使用者認證流量,並支援重新導向至外部身分提供者 (IdPs,如 Google Workspace/Cloud)。如果 SSL 憑證不受信任或與 Captive Portal 位址不符,用戶端裝置的瀏覽器將會顯示警告,或直接封鎖認證流程。

支援的憑證類型必須使用以下其中一種憑證類型:

  • 公用 (商用) CA 簽署憑證 (Public/Commercial CA–signed)
    • 大多數用戶端裝置會自動信任。
    • 推薦用於訪客 (Guest) 或 BYOD 環境。
  • 內部 CA 簽署憑證 (Internal CA–signed)
    • 必須在所有用戶端裝置上安裝並信任該內部 CA 的根憑證 (Root Certificate)。
    • 適用於受管控的企業內部環境。
  • 不建議使用自我簽署憑證 (Self-signed certificates) 進行 Captive Portal 認證。

憑證命名要求SSL 憑證必須符合以下要求:

  • Common Name (CN) 或 Subject Alternative Name (SAN) 必須是完整的網域名稱 (FQDN)。
  • 該 FQDN 必須能解析為 Captive Portal 伺服器位址。
    • 預設 Captive Portal 位址:6.6.6.6
  • 範例:
    • FQDN:portal.company.com
    • 憑證 CN 或 SAN:portal.company.com
    • DNS 解析:portal.company.com6.6.6.6

上傳憑證至 USG FLEX H 系列

  1. 登入 USG FLEX H 系列的網頁管理介面。
  2. 前往 System > Certificate。
  3. 匯入 SSL 憑證與私鑰 (Private Key)。
  4. 驗證憑證狀態是否有效。
image.png

指派憑證給 Captive Portal

  1. 前往 Captive Portal > Authentication Policy > Settings。
  2. 找到 HTTPS / Server Certificate 設定。
  3. 選擇您剛才匯入的憑證。
  4. 套用設定 (Apply)。
image.png

Authentication Proxy (認證代理)

前往 User & Authentication > User Authentication > Advanced。

為了避免在認證階段出現憑證警告,此處應使用商用 CA 簽署的憑證,或者您必須將內部 CA 的憑證部署到所有用戶端裝置上。此外,憑證的 Common Name (CN) 或 SAN (Subject Alternative Name) 必須是能解析為您防火牆 WAN IP 的 FQDN。

image.png

注意:請在您的「WAN 到 ZyWALL」安全策略 (secure-policy) 中,允許 Authentication Proxy 的通訊埠 (預設為 TCP 1003)。

Google Workspace/Cloud 設定

前往 Google Cloud Console > APIs & Services > OAuth consent screen。

image-a6e3bc6200b24-62a3.png

依照設定精靈輸入您的應用程式詳細資訊。建立一個專案名稱 (Project name)。

image-05a5c7b7766648-7981.png

將 目標對象 (Audience) 設定為 Internal (內部),以限制僅授權的工作坊參與者可存取 API,並確保環境隔離。

image-abe974bec05008-82dc.png

注意:若選擇 External (外部) 類型,為了維持嚴格的存取控制,您必須在 Audience > Test Users 區塊限制登入權限。只有手動加入此白名單的 Google 帳號才會被授權存取應用程式。

輸入聯絡資訊並點選建立。

image-691005ca84a5d8-3739.png image.png

繼續透過設定精靈建立您的 OAuth 用戶端。

image-c92deab05b69a8-edaf.png

將 Application type (應用程式類型) 選擇為 Web application (網頁應用程式)。為您的用戶端指定一個容易識別的名稱。

image-63b49a292c6b38-3950.png

在 USG FLEX H 系列上設定 OIDC

  1. 登入 USG FLEX H
  2. 前往 User & Authentication > User Authentication > Advanced
    1. 啟用 Authentication Proxy
    2. 將 HTTPS Port 設定為 1003
    3. 選擇 Server Certificate (伺服器憑證)
image-1446870b6fdbb-a2c7.png

請檢視您的 OAuth Client ID 總覽,您需要複製「Client ID」與「Client secret」來進行防火牆設定。

image-1d57b66f8c2448-76ca.png

前往 User & Authentication > User Authentication > AAA Server,接著新增一個 OIDC Server。

image-8a4b29a3942c-c22e.png

填寫伺服器詳細資訊:

Issuer URL: https://accounts.google.com

Client ID: {Client ID}

Client Secret: {Client Secret)

Redirect Address: {FQDN}

注意:重新導向 URI 的主機名稱必須是 FQDN,且該 FQDN 必須與您防火牆上 Authentication Proxy 的憑證設定完全相符。

複製上述的「Redirect URL」,回到 Google 的 OAuth 2.0 Client IDs 頁面,並貼上至 Authorized redirect URLs (已授權的重新導向 URI) 欄位中。

image-15ce6d83e62328-3e40.png

image-94830daa03925-1fab.png

回到 USG FLEX H 的 OIDC Server 頁面,找到 Configuration Validation 區塊並點選 Test (測試)。

image.png

您應該會看到 "OIDC Authentication Successful" (OIDC 認證成功)。

image-d56e3f39ba38c-9b3e.png

注意:USG FLEX H 管理介面上的 Advanced Settings (進階設定) 是選填項目。

  • Additional Scope: 指定 OIDC 認證請求中需要包含的額外範圍。若要請求多個範圍,請以空白鍵分隔。建議設定值為 email。
  • Login Name Attribute: 設定用於登入使用者名稱的 user-attr-name 欄位。建議設定值為 email。

在 USG FLEX H 系列上設定 Portal Service

為了確保 Captive Portal 的認證過程順暢且安全,在設定 OIDC 認證之前,必須先妥善完成憑證與 DNS 的準備工作。

設定 OIDC 伺服器憑證

  1. 前往 User & Authentication > User Authentication > Advanced。
  2. 在 Server Certificate 欄位中,選擇您先前準備好的憑證 (FQDN1)。
image-882b68693a1408-22bc.png

注意:請在您的「WAN 到 ZyWALL」安全策略 (secure-policy) 中,允許 Authentication Proxy 的通訊埠 (預設為 TCP 1003)。

設定 Captive Portal 伺服器的憑證

  1. 前往 Captive Portal > Authentication Policy > Settings
  2. 設定 Redirect FQDN
  3. 選擇您先前準備好的 Server Certificate (伺服器憑證) (FQDN2)。
image-fed3d4ed97f1e8-b7f4.png

設定 Captive Portal 存取的 DNS 記錄

Captive Portal 認證需要滿足以下條件:

  • 擁有一組專屬的 FQDN 供 Captive Portal 使用。
  • 該 FQDN 必須能透過 DNS 解析到 Captive Portal 的伺服器位址 (預設為 6.6.6.6)。
  • 用戶端裝置必須在進行認證之前,就能成功解析這組 FQDN。

情境 1:用戶端 DNS 指向內部 DNS 伺服器如果您的用戶端裝置是使用內部 DNS 伺服器 (例如 Active Directory DNS),請建立一筆 靜態 DNS 記錄 (static DNS record),將 Captive Portal 的 FQDN 解析到 Captive Portal 伺服器位址 (預設為 6.6.6.6)。

情境 2:用戶端 DNS 指向 USG FLEX H 系列如果您的用戶端裝置是將 USG FLEX H 系列當作 DNS 伺服器,請利用防火牆內建的 DNS 功能來設定靜態 DNS 項目。設定如下:

  1. 前往 System > DNS & DDNS > DNS
  2. 新增一筆 Address Record
  3. Hostname 欄位請留空。
  4. Domain 欄位選擇或點選 +Add 新增您的網域 (例如 fqdn2.yourdomain)。
  5. IP address 欄位填入 6.6.6.6
  6. 點選 Apply (套用)

image.png

在 USG FLEX H 系列上設定 Captive Portal

  1. 前往 Captive Portal > Authentication Policy > Policy
  2. 點選 Add (新增) 建立一條 Policy,將其啟用,並設定策略的詳細條件。
  3. Walled Garden List 區域中,點選 OIDC Providers 並選擇 Google
  4. Sign-in Method (登入方式)Sign-on With 選項中,選擇 OIDC server
  5. 點選 Apply (套用)
image.png image.png image.png

驗證:測試使用者登入 (Verification)

請確認 Captive Portal 能正確將尚未通過認證的使用者,重新導向到 Google 登入頁面,並在驗證成功後給予存取權限。

  1. 將用戶端裝置連上網路。
  2. 開啟瀏覽器,進入 Captive Portal 頁面,接著點選 Sign in (登入)
image.png

3. 確認是否重新導向至 Google 登入頁面。

image.png image.png

4. 認證成功,並取得存取權限。

image.png

確認可以成功連上網際網路。

image-63873302e652c-107a.png

5. 前往 Network Status > Login Users > Login Users 檢查登入使用者狀態,確認該使用者顯示為已透過 OIDC 成功驗證。

image.png