教學課程:使用 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識別碼輕鬆地設定所有應用程式的安全存取
必要條件
若要開始,您需要:
- Azure 訂用帳戶
- 如果您沒有帳戶,請取得 Azure 免費帳戶
- 連結至 Azure 訂用帳戶的 Azure AD B2C 租使用者
- BIG-IP 或已部署的試用 BIG-IP 虛擬環境, (Azure 上的 VE)
- 下列任一個 F5 BIG-IP 授權:
- F5 BIG-IP® Best 搭售方案
- F5 BIG-IP Access Policy Manager™ 獨立授權
- BIG-IP F5 BIG-IP 本機流量™管理員上的 F5 BIG-IP® 存取原則管理員™附加元件授權 (LTM)
- 90 天 BIG-IP 完整功能試用版授權
- 標頭型 Web 應用程式或用於測試的 IIS 應用程式
- 請參閱 設定 IIS 應用程式
- 透過 HTTPS 發佈服務的 SSL 憑證,或在測試時使用預設值
- 請參閱 SSL 設定檔
案例描述
下列案例是以標頭為基礎,但您可以使用這些方法來達成 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) 起始流程。
- 使用者連線到應用程式端點。 BIG-IP 是服務提供者。
- BIG-IP APM OIDC 用戶端會將使用者重新導向至 Azure AD B2C 租使用者端點 OIDC 授權伺服器
- Azure AD B2C 租使用者會預先驗證使用者,並套用條件式存取原則
- Azure AD B2C 會將使用者重新導向回具有授權碼的 SP
- OIDC 用戶端會要求授權伺服器交換識別碼權杖的授權碼
- BIG-IP APM 會授與使用者存取權,並在轉送到應用程式的用戶端要求中插入 HTTP 標頭
Azure AD B2C 組態
若要使用 Azure AD B2C 驗證來啟用 BIG-IP,請使用具有使用者流程或自訂原則的 Azure AD B2C 租使用者。
請參閱教學 課程:在 Azure AD B2C 中建立使用者流程和自訂原則
建立自訂屬性
從 Azure AD B2C 使用者物件、同盟 IdP、API 連接器或使用者註冊取得自訂屬性。 將屬性包含在移至應用程式的權杖中。
繼承應用程式需要特定屬性,因此將它們包含在您的使用者流程中。 您可以將它們取代為應用程式所需的屬性。 或者,如果您要使用指示來設定測試應用程式,則使用者任何標頭。
- 以全域管理員身分登入Azure 入口網站。
- 在左側窗格中,選取 [使用者屬性]。
- 選取 [新增 ] 以建立兩個自訂屬性。
- 針對 [代理程式識別碼],選取 [字串 資料類型]。
- 針對 [代理程式地理位置],選取 [字串 資料類型]。
將屬性新增至使用者流程
- 在左側功能表中,流覽至 [>原則使用者流程]。
- 例如,選取您的原則 B2C_1_SignupSignin。
- 選取 [使用者屬性 ] 。
- 新增這兩個自訂屬性。
- 新增 顯示名稱 屬性。 這些屬性會在使用者註冊期間收集。
- 選取 [應用程式宣告]。
- 新增這兩個自訂屬性。
- 新增 顯示名稱。 這些屬性會移至 BIG-IP。
- 選取 [執行使用者流程]。
- 在使用者流程功能表中的左側導覽列上,確認已定義屬性的提示。
深入瞭解 :教學課程:在 Azure AD B2C 中建立使用者流程和自訂原則
Azure AD B2C 同盟
同盟 BIG-IP 和 Azure AD B2C 以進行相互信任。 在 Azure AD B2C 租使用者中將 BIG-IP 註冊為 OIDC 應用程式。
- 在入口網站中,選取[應用程式註冊>[新增註冊]。
- 輸入應用程式 名稱,例如 HeaderApp1。
- 在 [支援的帳戶類型] 中,選取 [任何識別提供者或組織目錄中的帳戶 (適用於以使用者流程驗證使用者)]。
- 在 [重新導向 URI] 底下,選取 [Web]。
- 輸入受保護的服務公用 FQDN。
- 輸入路徑。
- 保留其餘選取專案。
- 選取 [註冊]。
- 流覽至[憑證 & 密碼>+ 新增用戶端密碼]。
- 輸入描述性名稱
- 針對 BIG-IP 所使用的秘密輸入 TTL。
- 請注意 BIG-IP 組態的用戶端密碼。
重新導向 URI 是 BIG-IP 端點。 驗證之後,授權伺服器 (Azure AD B2C) 會將使用者傳送至端點。
深入瞭解 :教學課程:在適用于 Azure AD B2C 的 Azure AD B2C 中註冊 Web 應用程式 。
BIG-IP 設定
針對 BIG-IP 組態,請使用引導式設定 v.7/8。 工作流程架構是專為存取拓撲量身打造,可完成快速的 Web 服務發佈。
引導式組態版本
- 若要確認版本,請使用系統管理員帳戶登入 BIG-IP Web 設定。
- 移至存取>引導式設定。
- 版本會出現在右上角。
若要升級引導式設定,請移至 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 管理。
引導式設定
- 若要啟動部署精靈,請在 Web 設定中,移至存取>引導式設定。
- 選取[同盟>F5] 作為 [OAuth 用戶端和資源伺服器]。
- 觀察此案例的流程摘要。
- 選取 [下一步]。
- 精靈隨即啟動。
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 資訊的中繼資料端點,例如簽署憑證變換。
- 找出 Azure AD B2C 租使用者的中繼資料端點。流覽至應用程式註冊>Endpoints。
- 複製 Azure AD B2C OpenID Connect 元資料檔案 URI。 例如:
https://wacketywackb2c .b2clogin.com/<tenantname>.onmicrosoft.com/<policyname>/v2.0/.well-known/openid-configuration
。 - 使用您的屬性來更新 URI。
https://<tenantname>.b2clogin.com/WacketywackB2C.onmicrosoft.com/B2C_1_SignUpIn/v2.0/.well-known/openid-configuration
- 將 URI 貼到瀏覽器中。
- 檢視 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 和條件式存取
測試登入註冊流程
- 以使用者身分,移至應用程式外部 URL。
- BIG-IP 的 OAuth 用戶端登入頁面隨即出現。
- 使用授權碼授與登入。 若要移除此步驟,請參閱 補充組態 一節。
- 註冊並驗證您的 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 登出端點。
- 在入口網站中,流覽至[管理>資訊清單]。
- 找出
logoutUrl
屬性。 它會讀取 null。 - 新增 APM 登出後 URI:
https://<mysite.com>/my.logout.php3
注意
<mysite.com>
是標頭型應用程式的 BIG-IP FQDN。
最佳化的登入流程
若要改善使用者登入體驗,請隱藏Microsoft Entra預先驗證之前出現的 OAuth 使用者登入提示。
流覽至存取>引導式設定。
在資料列最右邊,選取 掛鎖 圖示。
標頭型應用程式會解除鎖定嚴格的設定。
解除鎖定嚴格設定可防止使用精靈 UI 進行變更。 BIG-IP 物件會與已發佈的應用程式實例相關聯,而且會開放進行直接管理。
流覽至存取設定檔/原則>存取>設定檔 (個別會話原則) 。
針對應用程式原則物件,在 [ 個別會話原則 ] 資料行中,選取 [ 編輯]。
若要刪除 OAuth 登入頁面 原則物件,請選取 [X]。
在提示字元中,連線到上一個節點。
在左上角,選取 [ 套用存取原則]。
關閉視覺化編輯器索引標籤。
當您嘗試連線到應用程式時,Azure AD B2C 登入頁面隨即出現。
注意
如果您重新啟用 strict 模式並部署組態,則會覆寫在引導式設定 UI 外部執行的設定。 手動建立生產服務的組態物件,以實作此案例。
疑難排解
如果無法存取受保護的應用程式,請使用下列疑難排解指引。
記錄詳細資訊
BIG-IP 記錄具有隔離驗證和 SSO 問題的資訊。 增加記錄詳細資訊層級。
- 移至 [存取原則] > [概觀] > [事件記錄] > [設定] 。
- 選取已發佈應用程式的資料列,然後選取 [編輯] > [存取系統記錄檔]。
- 從 SSO 清單中,選取 [ 偵錯]。
- 選取 [確定]。
- 在檢閱記錄之前,請重現您的問題。
完成時,請還原先前的設定。
BIG-IP 錯誤訊息
如果您在 Azure AD B2C 驗證之後看到 BIG-IP 錯誤訊息,此問題可能與從 MICROSOFT ENTRA 識別碼到 BIG-IP 的 SSO 有關。
- 導覽至 [存取] > [概觀] > [存取報告]。
- 執行過去一小時的報表
- 檢閱記錄以取得線索。
- 選取 [ 檢視會話變數 ] 連結。
- 判斷 APM 是否收到預期的Microsoft Entra宣告。
沒有 BIG-IP 錯誤訊息
如果沒有出現 BIG-IP 錯誤訊息,問題可能會與後端要求相關,或從 BIG-IP 到應用程式的 SSO。
- 移至 [存取原則] > [概觀] > [作用中工作階段]。
- 選取作用中工作階段的連結。
- 選取 [ 檢視變數 ] 連結。
- 檢閱以判斷根本原因,特別是 BIG-IP APM 取得不正確的會話屬性時。
- 使用應用程式記錄來協助瞭解它是否以標頭的形式收到屬性。
引導設定 v8 已知問題
如果使用引導式設定 v8,已知問題會在成功 Azure AD B2C 驗證之後產生下列錯誤。 問題可能是 AGC 未在部署期間啟用自動 JWT 設定。 APM 無法取得目前的權杖簽署金鑰。 F5 工程正在調查根本原因。
相同的存取記錄會提供詳細資料。
手動啟用設定
- 流覽至存取>引導式設定。
- 在標頭型應用程式的資料列最右邊,選取 掛鎖。
- 流覽至存取>同盟>OAuth 用戶端/資源伺服器>提供者。
- 選取 Azure AD B2C 設定的提供者。
- 核取 [ 使用自動 JWT] 方塊。
- 選取 [探索]。
- 選取 [儲存]。
- [ 金鑰 (JWT) ] 欄位具有來自 OpenID URI 中繼資料的 TOKEN 簽署憑證金鑰識別碼 (KID) 。
- 在左上角,選取 [ 套用存取原則]。
- 選取 [套用]。
如需詳細資訊,請移至適用于OAuth 用戶端和資源伺服器疑難排解秘訣的 techdocs.f5.com