共用方式為


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

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

此解決方案有下列優點:

  • 客戶單一登入 (SSO) 至內部部署混合式應用程式 - Azure AD B2C 支援使用 Maverics Identity Orchestrator 的客戶 SSO
    • 使用者使用裝載于 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 租用戶
  • Azure 金鑰保存庫實例,用來儲存 Maverics Identity Orchestrator 所使用的秘密。 連線到 Azure AD B2C 或其他屬性提供者,例如輕量型目錄存取通訊協定 (LDAP) 目錄或資料庫。
  • 在 Azure 虛擬機器中執行的 Maverics Identity Orchestrator 實例, (VM) 或內部部署伺服器。 若要取得軟體和檔,請移至 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 Identity Orchestrator

若要取得軟體和檔,請移至 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 執行個體。

  • 作業系統:REHL 7.7 或更高版本、CentOS 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 金鑰保存庫擷取秘密。
  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

注意

headers 並使用 policies 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 金鑰保存庫作為秘密提供者

保護 Orchestrator 用來連線到 Azure AD B2C 和其他身分識別系統的秘密。 不過,Maverics 會以純文字載入的 maverics.yaml 秘密,但在本教學課程中,請使用 Azure 金鑰保存庫 作為秘密提供者。

遵循快速入門:使用 Azure 入口網站 從 Azure 金鑰保存庫設定和擷取秘密中的指示。 將秘密新增至保存庫,並記 SECRET NAME 下每個秘密的 。 例如: AzureADB2CClientSecret

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

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

角括弧中的值必須對應至 SECRET NAME Azure 金鑰保存庫中的指定密碼。

若要從 Azure 金鑰保存庫載入秘密,請使用 azure-credentials.json 檔案中找到的認證,在 檔案 /etc/maverics/maverics.env 中設定 環境變數 MAVERICS_SECRET_PROVIDER 。 使用下列模式:

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. 導覽至內部部署應用程式 URL https://example.com/sonar/dashboard
  2. Orchestrator 會重新導向至使用者流程頁面。
  3. 從清單中,選取 IdP。
  4. 如有 IdP 需要,請輸入認證,包括 MFA 權杖。
  5. 系統會將您重新導向至 Azure AD B2C,以將應用程式要求轉送至 Orchestrator 重新導向 URI。
  6. Orchestrator 會評估原則,並計算標頭。
  7. 要求的應用程式隨即出現。

下一步