教學課程:使用 Azure Active Directory B2C 和 F5 BIG-IP 為應用程式啟用安全的混合式存取

瞭解如何整合 Azure Active Directory B2C (Azure AD B2C) 與 F5 BIG-IP 存取原則管理員 (APM) 。 您可以透過 BIG-IP 安全性,透過 Azure AD B2C 預先驗證、條件式存取 (CA) ,以及單一登入 (SSO) 安全地向網際網路公開繼承應用程式。 F5 Inc. 著重于聯機服務的傳遞、安全性、效能和可用性,包括運算、儲存體和網路資源。 它提供硬體、模組化軟體和雲端就緒虛擬設備解決方案。

將 F5 BIG-IP 應用程式傳遞控制器 (ADC) 部署為私人網路與網際網路之間的安全閘道。 有應用層級檢查和可自訂存取控制的功能。 如果部署為反向 Proxy,請使用 BIG-IP,透過 APM 管理的同盟身分識別存取層,啟用對商務應用程式的安全混合式存取。

移至 f5.com 資源和白皮書,以透過Microsoft Entra識別碼輕鬆地設定所有應用程式的安全存取

必要條件

若要開始,您需要:

案例描述

下列案例是以標頭為基礎,但您可以使用這些方法來達成 Kerberos SSO。

在此案例中,內部應用程式的存取依賴從舊版訊息代理程式系統接收 HTTP 授權標頭。 銷售專員可以導向至個別的內容區域。 服務必須擴充到更廣泛的取用者基底。 應用程式會針對取用者驗證選項進行升級,或被取代。

在理想情況下,應用程式升級支援使用新式控制平面的直接管理和控管。 不過,現代化所需的時間和精力會導致成本和潛在的停機時間。 相反地,在公用網際網路與內部 Azure 虛擬網路之間部署 BIG-IP Virtual Edition (VE) , (VNet) 來閘道存取 Azure AD B2C。 應用程式前面的 BIG-IP 可讓服務與 Azure AD B2C 預先驗證和標頭型 SSO 重迭,以改善應用程式安全性狀態。

安全混合式存取解決方案具有下列元件:

  • 應用程式 - 受 Azure AD B2C 和 BIG-IP 安全混合式存取保護的後端服務
  • Azure AD B2C - 識別提供者 (IdP) 和 OpenID Connect (OIDC) 授權伺服器,可驗證使用者認證、多重要素驗證和 SSO 到 BIG-IP APM
  • BIG-IP - 應用程式的反向 Proxy。 BIG-IP APM 是 OIDC 用戶端,將驗證委派給 OIDC 授權伺服器,再將標頭型 SSO 委派給後端服務。

下圖說明此案例的服務提供者 (SP) 起始流程。

服務提供者起始流程的螢幕擷取畫面。

  1. 使用者連線到應用程式端點。 BIG-IP 是服務提供者。
  2. BIG-IP APM OIDC 用戶端會將使用者重新導向至 Azure AD B2C 租使用者端點 OIDC 授權伺服器
  3. Azure AD B2C 租使用者會預先驗證使用者,並套用條件式存取原則
  4. Azure AD B2C 會將使用者重新導向回具有授權碼的 SP
  5. OIDC 用戶端會要求授權伺服器交換識別碼權杖的授權碼
  6. BIG-IP APM 會授與使用者存取權,並在轉送到應用程式的用戶端要求中插入 HTTP 標頭

Azure AD B2C 組態

若要使用 Azure AD B2C 驗證來啟用 BIG-IP,請使用具有使用者流程或自訂原則的 Azure AD B2C 租使用者。

請參閱教學 課程:在 Azure AD B2C 中建立使用者流程和自訂原則

建立自訂屬性

從 Azure AD B2C 使用者物件、同盟 IdP、API 連接器或使用者註冊取得自訂屬性。 將屬性包含在移至應用程式的權杖中。

繼承應用程式需要特定屬性,因此將它們包含在您的使用者流程中。 您可以將它們取代為應用程式所需的屬性。 或者,如果您要使用指示來設定測試應用程式,則使用者任何標頭。

  1. 以全域管理員身分登入Azure 入口網站
  2. 在左側窗格中,選取 [使用者屬性]。
  3. 選取 [新增 ] 以建立兩個自訂屬性。
  4. 針對 [代理程式識別碼],選取 [字串 資料類型]。
  5. 針對 [代理程式地理位置],選取 [字串 資料類型]。

將屬性新增至使用者流程

  1. 在左側功能表中,流覽至 [>原則使用者流程]。
  2. 例如,選取您的原則 B2C_1_SignupSignin
  3. 選取 [使用者屬性 ]
  4. 新增這兩個自訂屬性。
  5. 新增 顯示名稱 屬性。 這些屬性會在使用者註冊期間收集。
  6. 選取 [應用程式宣告]
  7. 新增這兩個自訂屬性。
  8. 新增 顯示名稱。 這些屬性會移至 BIG-IP。
  9. 選取 [執行使用者流程]。
  10. 在使用者流程功能表中的左側導覽列上,確認已定義屬性的提示。

深入瞭解 :教學課程:在 Azure AD B2C 中建立使用者流程和自訂原則

Azure AD B2C 同盟

同盟 BIG-IP 和 Azure AD B2C 以進行相互信任。 在 Azure AD B2C 租使用者中將 BIG-IP 註冊為 OIDC 應用程式。

  1. 在入口網站中,選取[應用程式註冊>[新增註冊]。
  2. 輸入應用程式 名稱,例如 HeaderApp1
  3. 在 [支援的帳戶類型] 中,選取 [任何識別提供者或組織目錄中的帳戶 (適用於以使用者流程驗證使用者)]。
  4. [重新導向 URI] 底下,選取 [Web]。
  5. 輸入受保護的服務公用 FQDN。
  6. 輸入路徑。
  7. 保留其餘選取專案。
  8. 選取 [註冊]。
  9. 流覽至[憑證 & 密碼>+ 新增用戶端密碼]。
  10. 輸入描述性名稱
  11. 針對 BIG-IP 所使用的秘密輸入 TTL。
  12. 請注意 BIG-IP 組態的用戶端密碼。

重新導向 URI 是 BIG-IP 端點。 驗證之後,授權伺服器 (Azure AD B2C) 會將使用者傳送至端點。

深入瞭解 :教學課程:在適用于 Azure AD B2C 的 Azure AD B2C 中註冊 Web 應用程式

BIG-IP 設定

針對 BIG-IP 組態,請使用引導式設定 v.7/8。 工作流程架構是專為存取拓撲量身打造,可完成快速的 Web 服務發佈。

引導式組態版本

  1. 若要確認版本,請使用系統管理員帳戶登入 BIG-IP Web 設定。
  2. 移至存取>引導式設定
  3. 版本會出現在右上角。

若要升級引導式設定,請移至 K85454683:升級 BIG-IP 系統上的 F5 BIG-IP 引導式組態 my.f5.com

SSL 設定檔

使用設定為用戶端 SSL 設定檔的 BIG-IP,透過 TLS 保護用戶端流量。 匯入符合您應用程式之公開 URL 所使用的功能變數名稱的憑證。 建議您使用公用憑證授權單位單位,但您可以使用 BIG-IP 自我簽署憑證進行測試。

若要在 BIG-IP VE 中新增和管理憑證,請移至 BIG-IP 系統的 techdocs.f5.com:SSL 管理

引導式設定

  1. 若要啟動部署精靈,請在 Web 設定中,移至存取>引導式設定
  2. 選取[同盟>F5] 作為 [OAuth 用戶端和資源伺服器]。
  3. 觀察此案例的流程摘要。
  4. 選取 [下一步]。
  5. 精靈隨即啟動。

OAuth 屬性

在下列各節中,定義屬性,以啟用 BIG-IP APM 與 OAuth 授權伺服器、Azure AD B2C 租使用者之間的同盟。 OAuth 會在整個 BIG-IP 組態中參考。 解決方案使用 OIDC,這是 OAuth 2.0 通訊協定上的識別層。 OIDC 用戶端會驗證使用者身分識別,並取得其他設定檔資訊。

組態名稱

組態顯示名稱有助於區分引導式組態中的部署組態。 您無法變更名稱,而且只會出現在 [引導式設定] 檢視中。

模式

BIG-IP APM 是 OIDC 用戶端,因此請選取 [用戶端] 選項。

DNS 解析程式

指定的目標必須解析 Azure AD B2C 端點的公用 IP 位址。 選取公用 DNS 解析程式,或建立新的解析程式。

提供者設定

將 Azure AD B2C 設定為 OAuth2 IdP。 引導式設定具有 Azure AD B2C 範本,但沒有特定範圍。

新增提供者並加以設定:

OAuth 一般屬性

屬性 Description
OAuth 提供者類型 Custom
選擇 OAuth 提供者 建立新的,或使用 OAuth 提供者
名稱 B2C IdP 的顯示名稱。 登入時,此名稱會顯示為使用者作為提供者選項
權杖類型 JSON Web 權杖

OAuth 原則設定

屬性 描述
範圍 保留空白。 會自動新增使用者登入的 OpenID 範圍
授與類型 授權碼
啟用 OpenID Connect 選取選項,將 APM OAuth 用戶端置於 OIDC 模式
流程類型 授權碼

OAuth 提供者設定

下列 OpenID URI 是指 OIDC 用戶端用來探索 IdP 資訊的中繼資料端點,例如簽署憑證變換。

  1. 找出 Azure AD B2C 租使用者的中繼資料端點。流覽至應用程式註冊>Endpoints
  2. 複製 Azure AD B2C OpenID Connect 元資料檔案 URI。 例如: https://wacketywackb2c .b2clogin.com/<tenantname>.onmicrosoft.com/<policyname>/v2.0/.well-known/openid-configuration
  3. 使用您的屬性來更新 URI。 https://<tenantname>.b2clogin.com/WacketywackB2C.onmicrosoft.com/B2C_1_SignUpIn/v2.0/.well-known/openid-configuration
  4. 將 URI 貼到瀏覽器中。
  5. 檢視 Azure AD B2C 租使用者的 OIDC 中繼資料。
屬性 描述
適用對象 代表 Azure AD B2C 租使用者中 BIG-IP 的應用程式用戶端識別碼
驗證 URI B2C OIDC 中繼資料中的授權端點
權杖 URI 您 Azure AD B2C 中繼資料內的權杖端點
使用者資訊要求 URI 保留空白。 Azure AD B2C 不支援此功能
OpenID URI 您所建立的 OpenID URI 中繼資料端點
忽略過期的憑證驗證 保持未核取狀態
允許自我簽署 JWK 設定憑證 勾選
受信任的 CA 套件組合 選取 ca-bundle.crt 以使用預設 F5 受信任授權單位
探索間隔 提供 BIG-IP 的間隔,以查詢 Azure AD B2C 租使用者是否有更新。 AGC 16.1 0.0.19 版中的最小間隔為 5 分鐘。

OAuth 伺服器設定

針對 OIDC 授權伺服器,成為您的 Azure AD B2C 租使用者。

屬性 說明
用戶端識別碼 應用程式用戶端識別碼,代表 Azure AD B2C 租使用者中的 BIG-IP
用戶端密碼 應用程式用戶端密碼
用戶端-伺服器 SSL 設定檔 設定 SSL 設定檔,以確保 APM 會透過 TLS 與 Azure AD B2C IdP 通訊。 選取預設 伺服器l

OAuth 要求設定

BIG-IP 在其預先設定的要求集中必須有 Azure AD B2C 要求。 不過,要求的格式不正確,而且缺少重要的參數。 因此,我們會手動建立它們。

權杖要求:已啟用

屬性 Description
選擇 OAuth 要求 新建
HTTP method POST
啟用標頭 未核取
啟用參數 已檢查
參數 參數名稱 參數值
client_id client_id N/A
nonce nonce N/A
redirect_uri redirect_uri N/A
scope scope N/A
response_type response_type N/A
client_secret client_secret N/A
自訂 grant_type authorization_code

驗證重新導向要求:已啟用

屬性 Description
選擇 OAuth 要求 新建
HTTP method GET
提示類型
啟用標頭 未核取
啟用參數 已檢查
參數 參數名稱 參數值
client_id client_id N/A
redirect_uri redirect_uri N/A
response_type response_type N/A
scope scope N/A
nonce nonce N/A

權杖重新整理要求已停用 您可以視需要啟用和設定。

OpenID UserInfo 要求:全域 Azure AD B2C 租使用者中不支援 停用

虛擬伺服器屬性

建立 BIG-IP 虛擬伺服器,以攔截受安全混合式存取保護之後端服務的外部用戶端要求。 為代表應用程式的 BIG-IP 服務端點指派對應至公用 DNS 記錄的虛擬伺服器。 如果有的話,請使用虛擬伺服器,否則請提供下列屬性。

屬性 Description
目的地址 成為後端應用程式 BIG-IP 服務端點的私人或公用 IP
服務連接埠 HTTPS
啟用重新導向連接埠 選取以自動將使用者從 HTTP 重新導向至 HTTPs
重新導向連接埠 HTTP
用戶端 SSL 設定檔 使用具有 SSL 憑證的設定檔交換預先定義的 clientssl 設定檔。 您可以使用預設設定檔進行測試。 但可能會導致瀏覽器警示。

集區屬性

後端服務會以集區的形式出現在 BIG-IP 中,其中一或多部應用程式伺服器會將虛擬伺服器導向輸入流量。 選取集區,否則請建立新的集區。

屬性 Description
負載平衡方法 選取迴圈配置資源
集區伺服器 後端應用程式的內部 IP
連接埠 後端應用程式的服務埠

注意

確定 BIG-IP 能夠看見集區伺服器位址。

SSO 設定

BIG-IP 支援 SSO 選項,但在 OAuth 用戶端模式中,引導式設定僅限於 Kerberos 或 HTTP 標頭。 啟用 SSO,並使用 APM 的下列資訊,將定義的輸入屬性對應至輸出標頭。

屬性 Description
標頭作業 插入
標頭名稱 NAME
標頭值 %{session.oauth.client.last.id_token.name}
標頭作業 插入
標頭名稱 agentid
標頭值 %{session.oauth.client.last.id_token.extension_AgentGeo}

注意

大括弧內的 APM 工作階段變數會區分大小寫。 當 Azure AD B2C 屬性名稱以 AgentID 傳送時,輸入 agentid 會導致屬性對應失敗。 以小寫定義屬性。 在 Azure AD B2C 中,使用者流程會使用入口網站中的屬性名稱,提示使用者輸入更多屬性。 因此,請使用句子大小寫,而不是小寫。

單一登入設定的螢幕擷取畫面,包括類型和標頭。

自訂屬性

自訂使用者在 APM 存取原則流程中看到的畫面語言和外觀。 編輯螢幕訊息和提示、變更螢幕配置、色彩、影像,以及當地語系化標題、描述和訊息。

在 [ 表單標題 ] 文字欄位中,將字串取代 F5 Networks 為您想要的名稱。

工作階段管理屬性

使用 BIG-IP 會話管理設定來定義終止會話或允許它們繼續的條件。 設定使用者和 IP 位址和錯誤頁面的限制。 建議您實作單一登出 (SLO) ,以安全地終止會話,降低未經授權的存取風險。

部署設定

選取 [部署 ] 以認可設定,並建立 BIG-IP 和 APM 物件,以保護應用程式的混合式存取。 應用程式會在條件式存取中顯示為目標資源。 為了提高安全性,請封鎖直接存取應用程式,藉此強制執行透過 BIG-IP 的路徑。

深入瞭解: Azure AD B2C 的 Identity Protection 和條件式存取

測試登入註冊流程

  1. 以使用者身分,移至應用程式外部 URL。
  2. BIG-IP 的 OAuth 用戶端登入頁面隨即出現。
  3. 使用授權碼授與登入。 若要移除此步驟,請參閱 補充組態 一節。
  4. 註冊並驗證您的 Azure AD B2C 租使用者。

下列影像是使用者登入對話方塊和登入歡迎頁面。

使用者登入對話方塊的螢幕擷取畫面。

登入歡迎頁面的螢幕擷取畫面。

為了提高安全性,請封鎖直接存取應用程式,藉此強制執行透過 BIG-IP 的路徑。

補充設定

單一登出 (SLO)

Azure AD B2C 支援識別提供者 (IdP) 和應用程式登出。請參閱 單一登出

若要達成 SLO,請讓應用程式登出函式呼叫 Azure AD B2C 登出端點。 然後,Azure AD B2C 會發出最終重新導向至 BIG-IP。 此動作可確保使用者應用程式 APM 會話終止。

另一個 SLO 程式是在選取應用程式 [登出 ] 按鈕時,讓 BIG-IP 接聽要求。 偵測到要求時,它會呼叫 Azure AD B2C 登出端點。 此方法會排除對應用程式進行變更。

若要深入瞭解 BIG-IP iRules,請移至K42052145 support.f5.com :根據 URI 參考的檔案名設定自動會話終止 (登出)

注意

無論使用何種方法,請確定 Azure AD B2C 租使用者知道 APM 登出端點。

  1. 在入口網站中,流覽至[管理>資訊清單]。
  2. 找出 logoutUrl 屬性。 它會讀取 null。
  3. 新增 APM 登出後 URI: https://<mysite.com>/my.logout.php3

注意

<mysite.com> 是標頭型應用程式的 BIG-IP FQDN。

最佳化的登入流程

若要改善使用者登入體驗,請隱藏Microsoft Entra預先驗證之前出現的 OAuth 使用者登入提示。

  1. 流覽至存取>引導式設定

  2. 在資料列最右邊,選取 掛鎖 圖示。

  3. 標頭型應用程式會解除鎖定嚴格的設定。

    [狀態]、[名稱] 和 [類型] 輸入的螢幕擷取畫面;也是掛鎖圖示。

解除鎖定嚴格設定可防止使用精靈 UI 進行變更。 BIG-IP 物件會與已發佈的應用程式實例相關聯,而且會開放進行直接管理。

  1. 流覽至存取設定檔/原則>存取>設定檔 (個別會話原則)

  2. 針對應用程式原則物件,在 [ 個別會話原則 ] 資料行中,選取 [ 編輯]。

    [存取原則] 下的 [編輯] 選項螢幕擷取畫面,位於 [存取] 對話方塊上。

  3. 若要刪除 OAuth 登入頁面 原則物件,請選取 [X]。

  4. 在提示字元中,連線到上一個節點。

    OAuth 登入頁面原則物件上 X 選項的螢幕擷取畫面。

  5. 在左上角,選取 [ 套用存取原則]。

  6. 關閉視覺化編輯器索引標籤。

當您嘗試連線到應用程式時,Azure AD B2C 登入頁面隨即出現。

注意

如果您重新啟用 strict 模式並部署組態,則會覆寫在引導式設定 UI 外部執行的設定。 手動建立生產服務的組態物件,以實作此案例。

疑難排解

如果無法存取受保護的應用程式,請使用下列疑難排解指引。

記錄詳細資訊

BIG-IP 記錄具有隔離驗證和 SSO 問題的資訊。 增加記錄詳細資訊層級。

  1. 移至 [存取原則] > [概觀] > [事件記錄] > [設定] 。
  2. 選取已發佈應用程式的資料列,然後選取 [編輯] > [存取系統記錄檔]。
  3. 從 SSO 清單中,選取 [ 偵錯]。
  4. 選取 [確定]。
  5. 在檢閱記錄之前,請重現您的問題。

完成時,請還原先前的設定。

BIG-IP 錯誤訊息

如果您在 Azure AD B2C 驗證之後看到 BIG-IP 錯誤訊息,此問題可能與從 MICROSOFT ENTRA 識別碼到 BIG-IP 的 SSO 有關。

  1. 導覽至 [存取] > [概觀] > [存取報告]。
  2. 執行過去一小時的報表
  3. 檢閱記錄以取得線索。
  4. 選取 [ 檢視會話變數 ] 連結。
  5. 判斷 APM 是否收到預期的Microsoft Entra宣告。

沒有 BIG-IP 錯誤訊息

如果沒有出現 BIG-IP 錯誤訊息,問題可能會與後端要求相關,或從 BIG-IP 到應用程式的 SSO。

  1. 移至 [存取原則] > [概觀] > [作用中工作階段]。
  2. 選取作用中工作階段的連結。
  3. 選取 [ 檢視變數 ] 連結。
  4. 檢閱以判斷根本原因,特別是 BIG-IP APM 取得不正確的會話屬性時。
  5. 使用應用程式記錄來協助瞭解它是否以標頭的形式收到屬性。

引導設定 v8 已知問題

如果使用引導式設定 v8,已知問題會在成功 Azure AD B2C 驗證之後產生下列錯誤。 問題可能是 AGC 未在部署期間啟用自動 JWT 設定。 APM 無法取得目前的權杖簽署金鑰。 F5 工程正在調查根本原因。

拒絕存取錯誤訊息的螢幕擷取畫面。

相同的存取記錄會提供詳細資料。

記錄訊息詳細資料的螢幕擷取畫面。

手動啟用設定

  1. 流覽至存取>引導式設定
  2. 在標頭型應用程式的資料列最右邊,選取 掛鎖
  3. 流覽至存取>同盟>OAuth 用戶端/資源伺服器>提供者
  4. 選取 Azure AD B2C 設定的提供者。
  5. 核取 [ 使用自動 JWT] 方塊。
  6. 選取 [探索]。
  7. 選取 [儲存]。
  8. [ 金鑰 (JWT) ] 欄位具有來自 OpenID URI 中繼資料的 TOKEN 簽署憑證金鑰識別碼 (KID) 。
  9. 在左上角,選取 [ 套用存取原則]。
  10. 選取 [套用]。

如需詳細資訊,請移至適用于OAuth 用戶端和資源伺服器疑難排解秘訣的 techdocs.f5.com