共用方式為


使用 Strata 設定 Azure Active Directory B2C 的教學課程

這很重要

自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解

在本教學課程中,瞭解如何整合 Azure Active Directory B2C (Azure AD B2C) 與 Strata Maverics Identity Orchestrator,以協助保護內部部署應用程式。 它會連線到身分識別系統、移轉使用者和認證、同步處理原則和設定,以及抽象驗證和會話管理。 使用 Strata 從舊版轉換至 Azure AD B2C,而不需重寫應用程式。

此解決方案有下列優點:

  • 客戶單一登入(SSO)至內部部署混合式應用程式 - Azure AD B2C 支援利用 Maverics Identity Orchestrator 的客戶單一登入功能
    • 使用者登入託管於 Azure AD B2C 或身分識別提供者 (IdP) 的帳戶。
    • Maverics 會向過去受 Symantec SiteMinder 這類舊版身分識別系統保護的應用程式證明 SSO
  • 將標準 SSO 擴充至應用程式 - 使用 Azure AD B2C 來管理使用者存取,並使用 Maverics Identity Orchestrator Security Assertion Markup Language (SAML) 或 OpenID Connect (OIDC) 連接器啟用 SSO
  • 輕鬆設定 - 將 Maverics Identity Orchestrator SAML 或 OIDC 連接器連線至 Azure AD B2C

先決條件

若要開始,您需要:

  • 連結至您 Azure 訂用帳戶的 Azure AD B2C 租戶
  • 用來儲存Maverics Identity Orchestrator所使用秘密的 Azure Key Vault 實例。 連線到 Azure AD B2C 或其他屬性提供者,例如輕量型目錄存取通訊協定 (LDAP) 目錄或資料庫。
  • 在 Azure 虛擬機器 (VM) 或內部部署伺服器中執行的 Maverics Identity Orchestrator 實例。 若要取得軟體和檔,請移至 strata.io 連絡 Strata Identity
  • 本地部署的應用程式轉換至 Azure AD B2C

案例描述

Maverics Identity Orchestrator 的整合功能包括下列元件:

  • Azure AD B2C - 驗證使用者認證的授權伺服器
    • 已驗證的使用者會使用 Azure AD B2C 目錄中的本機帳戶存取內部部署應用程式
  • 外部社交或企業識別提供者 (IdP):OIDC 提供者、Facebook、Google 或 GitHub
  • Strata Maverics Identity Orchestrator:使用者登入服務,可透過 HTTP 標頭將身分識別傳遞至應用程式

下列架構圖顯示實作。

Azure AD B2C 整合架構與 Maverics Identity Orchestrator 的圖表,可供存取混合式應用程式。

  1. 使用者要求存取內部部署裝載的應用程式。 Maverics Identity Orchestrator 會將對應用程式的要求進行 Proxy 處理。
  2. 協調器會檢查使用者驗證狀態。 如果沒有會話令牌,或令牌無效,則使用者會前往 Azure AD B2C 進行驗證
  3. Azure AD B2C 會將驗證要求傳送至已設定的社交 IdP。
  4. IdP 會挑戰用戶進行認證。 可能需要多重要素驗證 (MFA)。
  5. IdP 會將驗證回應傳送至 Azure AD B2C。 用戶可以在 Azure AD B2C 目錄中建立本機帳戶。
  6. Azure AD B2C 會將使用者要求傳送至 Azure AD B2C 租使用者中 Orchestrator 應用程式註冊期間指定的端點。
  7. Orchestrator 會評估轉送至應用程式的 HTTP 標頭存取原則和屬性值。 Orchestrator 可能會呼叫其他屬性提供者,以擷取資訊來設定標頭值。 Orchestrator 會將要求傳送至應用程式。
  8. 用戶已經過驗證,且可存取應用程式。

Maverics 身份協調器

若要取得軟體和檔,請移至 strata.io 連絡 Strata Identity。 判斷 Orchestrator 必要條件。 安裝和設定。

設定您的 Azure AD B2C 租戶

在按照以下指示操作的過程中,記錄:

  • 租使用者名稱和識別碼
  • 用戶端識別碼
  • 客戶端密碼
  • 已設定的宣告
  • 重新導向 URI
  1. 在 Azure AD B2C 租用者中註冊 Azure Active Directory B2C 的 Web 應用程式
  2. 將MICROSOFT MS Graph API 許可權授與您的應用程式。 使用許可權: offline_accessopenid
  3. 新增符合 oauthRedirectURL Orchestrator Azure AD B2C 連接器組態參數的重新導向 URI,例如 https://example.com/oidc-endpoint
  4. 在 Azure Active Directory B2C 中建立使用者流程和自定義原則
  5. 將識別提供者新增至您的 Azure Active Directory B2C 租使用者。 使用本機帳戶、社交或企業帳戶登入您的使用者。
  6. 定義註冊期間要收集的屬性。
  7. 指定要使用 Orchestrator 執行個體傳回至應用程式的屬性。

備註

Orchestrator 會使用 Azure AD B2C 所傳回宣告的屬性,而且可以從已連線的身分識別系統 (例如 LDAP 目錄和資料庫) 擷取屬性。 這些屬性位於 HTTP 標頭中,並傳送至上游內部部署應用程式。

設定 Maverics Identity Orchestrator

使用下列各節中的指示來設定 Orchestrator 實例。

Maverics Identity Orchestrator 伺服器需求

您可以透過 Azure、AWS 或 GCP 等提供者,在任何伺服器上執行 Orchestrator 實例,無論是內部部署或公用雲端基礎結構。

  • 作系統:RHEL 7.7 或更高版本
  • 磁碟:10 GB(小型)
  • 記憶體:16 GB
  • :22 (SSH/SCP)、443、80
  • 根存取:用於安裝/系統管理工作
  • Maverics Identity Orchestrator:以使用者 maverics 身分在 systemd 執行
  • 網路輸出:從裝載 Maverics Identity Orchestrator 的伺服器,可連線到您的 Microsoft Entra 租用戶

安裝Maverics Identity Orchestrator

  1. 取得最新的Maverics RPM 套件。

  2. 將套件放在您想要安裝Maverics的系統上。 如果您要複製到遠端主機,請使用 SSH scp

  3. 執行下列命令。 使用您的檔案名來取代 maverics.rpm

    sudo rpm -Uvf maverics.rpm

    根據預設,Maverics 位於 /usr/local/bin 目錄中。

  4. Maverics 會在 systemd 下以服務的形式執行。

  5. 若要確認Maverics服務正在執行,請執行下列命令:

    sudo service maverics status

  6. 會出現下列訊息(或類似的訊息)。

Redirecting to /bin/systemctl status maverics.service
  maverics.service - Maverics
  Loaded: loaded (/etc/systemd/system/maverics.service; enabled; vendor preset: disabled)
  Active: active (running) since Thu 2020-08-13 16:48:01 UTC; 24h ago
  Main PID: 330772 (maverics)
  Tasks: 5 (limit: 11389)
  Memory: 14.0M
  CGroup: /system.slice/maverics.service
          └─330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml

備註

如果 Maverics 無法啟動,請執行下列命令:

journalctl --unit=maverics.service --reverse

最新的日誌條目會出現在輸出中。

  1. maverics.yaml目錄中建立的預設檔案為/etc/maverics
  2. 設定 Orchestrator 以保護應用程式。
  3. 與 Azure AD B2C 整合並儲存。
  4. Azure Key Vault 擷取秘密。
  5. 定義 Orchestrator 的組態讀取位置。

使用環境變數提供設定

使用環境變數來設定 Orchestrator 實例。

MAVERICS_CONFIG

此環境變數會通知 Orchestrator 實例要使用的 YAML 組態檔,以及在啟動或重新啟動期間尋找它們的位置。 在中 /etc/maverics/maverics.env設定環境變數。

建立 Orchestrator TLS 組態

tls中的 maverics.yaml 欄位會宣告 Orchestrator 實例所使用的傳輸層安全性設定。 連接器會使用 TLS 物件和 Orchestrator 伺服器。

金鑰 maverics 會保留給 Orchestrator 伺服器。 使用其他金鑰將 TLS 物件插入連接器。

tls:
  maverics:
    certFile: /etc/maverics/maverics.cert
    keyFile: /etc/maverics/maverics.key

設定 Azure AD B2C 連接器

Orchestrator 使用連接器來與驗證和屬性提供者整合。 Orchestrators 應用程式閘道會使用 Azure AD B2C 連接器作為驗證和屬性提供者。 Azure AD B2C 會使用社交 IdP 進行驗證,然後提供屬性給 Orchestrator,以傳遞 HTTP 標頭中所設定宣告內的屬性。

連接器的設定會對應至 Azure AD B2C 租用戶中所註冊的應用程式。

  1. 從您的應用程式設定中,將 [用戶端識別符]、[用戶端密鑰] 和 [重新導向 URI] 複製到您的租戶。
  2. 輸入連接器名稱(範例為 azureADB2C)。
  3. 將連線器 type 設定為 azure
  4. 記下連接器名稱。 您將在其他組態參數中使用此值。
  5. authType 設為 oidc
  6. 針對oauthClientID參數,設定您複製的用戶端識別碼。
  7. 針對 oauthClientSecret 參數,請設定您複製的用戶端密碼。
  8. 針對oauthRedirectURL參數,將您複製的重新導向 URI 設定為參數值。
  9. Azure AD B2C OIDC 連接器會使用 OIDC 端點來探索元數據,包括 URL 和簽署密鑰。 針對租戶端點,請使用 oidcWellKnownURL
connectors:
  name: azureADB2C
  type: azure
  oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
  oauthRedirectURL: https://example.com/oidc-endpoint
  oauthClientID: <azureADB2CClientID>
  oauthClientSecret: <azureADB2CClientSecret>
  authType: oidc

將 Azure AD B2C 定義為您的驗證提供者

驗證供應商會決定在應用程式資源要求期間未呈現有效工作階段的使用者進行驗證。 Azure AD B2C 租用戶設定會決定使用者如何挑戰認證,同時套用其他驗證原則。 例如,需要第二種要素以完成驗證,然後在驗證後決定要傳回至 Orchestrator 應用程式閘道的內容。

的值 authProvider 必須符合您的連接器 name 值。

authProvider: azureADB2C

使用 Orchestrator 應用程式閘道保護內部部署應用程式

Orchestrator 應用程式閘道組態會宣告 Azure AD B2C 如何保護您的應用程式,以及使用者如何存取應用程式。

  1. 輸入應用程式閘道名稱。
  2. 設定 location。 這個範例會使用應用程式根 /
  3. 在中 upstream定義受保護的應用程式。 使用 host:port 慣例:https://example.com:8080
  4. 設定錯誤和未授權頁面的值。
  5. 定義應用程式的 HTTP 標頭名稱和屬性值,以建立驗證和控制。 標頭名稱通常對應至應用程式組態。 屬性值由連接器的名稱空間界定。 在這裡範例中,從 Azure AD B2C 傳回的值前面會加上連接器名稱 azureADB2C。 後綴是具有必要值的屬性名稱,例如 given_name
  6. 設定原則。 已定義三個動作: allowUnauthenticatedallowAnyAuthenticatedallowIfAny。 每個動作都會與 resource相關聯。 原則會針對該 resource 進行評估。

備註

headerspolicies 使用 JavaScript 或 GoLang 服務延伸模組來實作任意邏輯。

appgateways:
  - name: Sonar
    location: /
    upstream: https://example.com:8080
    errorPage: https://example.com:8080/sonar/error
    unauthorizedPage: https://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

Azure Key Vault 作為祕密提供者

保護 Orchestrator 用來連線至 Azure AD B2C 和其他身分識別系統的祕密。 Maverics 以純文字從 maverics.yaml 載入祕密,不過,在本教學課程中,使用 Azure Key Vault 作為祕密提供者。

遵循以下區段中的指示,快速入門:使用 Azure 入口網站從 Azure Key Vault 設定及擷取祕密。 將您的祕密新增到保存庫,並記下每個祕密的 SECRET NAME。 例如: AzureADB2CClientSecret

若要將值宣告為組態檔中的 maverics.yaml 秘密,請使用角括號包裝秘密:

connectors:
  - name: AzureADB2C
    type: azure
    oauthClientID: <AzureADB2CClientID>
    oauthClientSecret: <AzureADB2CClientSecret>

角括弧中的值必須對應至 Azure Key Vault 中提供給祕密的 SECRET NAME

要從 Azure Key Vault 載入金鑰,請在檔案中MAVERICS_SECRET_PROVIDER設置環境變數/etc/maverics/maverics.env,並使用 azure-credentials.json 檔案中找到的憑據。 使用下列模式:

MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'

完成設定

下列資訊說明 Orchestrator 設定的顯示方式。

version: 0.4.2
listenAddress: ":443"
tls:
  maverics:
    certFile: certs/maverics.crt
    keyFile: certs/maverics.key

authProvider: azureADB2C

connectors:
  - name: azureADB2C
    type: azure
    oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
    oauthRedirectURL: https://example.com/oidc-endpoint
    oauthClientID: <azureADB2CClientID>
    oauthClientSecret: <azureADB2CClientSecret>
    authType: oidc

appgateways:
  - name: Sonar
    location: /
    upstream: http://example.com:8080
    errorPage: http://example.com:8080/sonar/accessdenied
    unauthorizedPage: http://example.com:8080/sonar/accessdenied

    headers:
      SM_USER: azureADB2C.sub
      firstname: azureADB2C.given_name
      lastname: azureADB2C.family_name

    policies:
      - resource: ~ \.(jpg|png|ico|svg)
        allowUnauthenticated: true
      - resource: /
        allowAnyAuthenticated: true
      - resource: /sonar/daily_deals
        allowIfAny:
          azureADB2C.customAttribute: Rewards Member

測試流程

  1. 瀏覽至內部部署應用程式網址, https://example.com/sonar/dashboard
  2. Orchestrator 會重新導向至使用者流程頁面。
  3. 從清單中選取IdP。
  4. 輸入認證,如果 IdP 要求,則包括 MFA 權杖。
  5. 系統會將您重新導向至 Azure AD B2C,並將應用程式要求轉送至 Orchestrator 重新導向 URI。
  6. Orchestrator會評估策略,並計算標題。
  7. 要求的應用程式隨即出現。

後續步驟