共用方式為


使用 Azure AD B2C 保護 Azure API 管理 API

這很重要

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

瞭解如何將對 Azure API 管理 API 的存取限製為已使用 Azure Active Directory B2C (Azure AD B2C) 進行身份驗證的用戶端。 按照本文中的說明在 Azure API 管理中創建和測試入站策略,該策略將訪問限制為僅包含有效的 Azure AD B2C 頒發的訪問令牌的請求。

先決條件

在開始之前,請確保您已準備好以下資源:

獲取 Azure AD B2C 應用程式 ID

使用 Azure AD B2C 在 Azure API 管理中保護 API 時,在 Azure API 管理中創建的 入站策略 需要多個值。 首先,記錄之前在 Azure AD B2C 租戶中創建的應用程式的應用程式 ID。 如果您使用創建的應用程式來滿足先決條件,請使用 webapp1 的應用程式 ID。

若要在 Azure AD B2C 租戶中註冊應用程式,可以使用我們新的統一 應用程式註冊 體驗或舊版 應用程式 體驗。 詳細瞭解 新註冊體驗

  1. 登入 Azure 入口網站
  2. 如果您有多個租用戶的存取權,請使用頂端功能表中的 [設定] 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租用戶。
  3. 在左側窗格中,選擇“ Azure AD B2C”。 或者,可以選擇 “所有服務 ”,然後搜索並選擇“ Azure AD B2C”。
  4. 選擇 App registrations(應用程式註冊),然後選擇 Owned applications(擁有的應用程式) 選項卡。
  5. webapp1 或您之前創建的其他應用程式的 Application (client) ID (應用程式 (用戶端) ID) 列中記錄該值。

獲取令牌頒發者端點

接下來,獲取其中一個 Azure AD B2C 使用者流的已知配置 URL。 還需要要在 Azure API 管理中支援的令牌頒發者終結點 URI。

  1. Azure 門戶中,轉到 Azure AD B2C 租戶。

  2. 原則底下,選擇使用者流程

  3. 選擇現有策略(例如 B2C_1_signupsignin1),然後選擇 Run user flow(運行使用者流)。

  4. 請記錄頁面頂部附近的Run user flow標題下顯示的超連結的URL。 此 URL 是使用者流的 OpenID Connect 已知發現終結點,在 Azure API 管理中配置入站策略時,將在下一部分中使用它。

    Azure 門戶的「運行使用者流」頁上的已知 URI 超連結的螢幕截圖。

  5. 選擇超連結以轉到 OpenID Connect 已知配置頁。

  6. 在瀏覽器中打開的頁面上,記錄 issuer 該值。 例如:

    https://<tenant-name>.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

    在 Azure API 管理中設定 API 時,您將在下一部分中使用此值。

現在,您應該已記錄兩個 URL 以供下一部分使用:OpenID Connect 已知配置終端節點 URL 和頒發者 URI。 例如:

https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration
https://<tenant-name>.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/

在 Azure API 管理中配置入站策略

現在,你已準備好在 Azure API 管理中添加用於驗證 API 調用的入站策略。 通過添加 JSON Web 令牌 (JWT) 驗證 策略來驗證訪問權杖中的受眾和頒發者,您可以確保僅接受具有有效令牌的 API 調用。

  1. Azure 門戶中,轉到 Azure API 管理實例。

  2. 選取 [API]

  3. 選擇要使用 Azure AD B2C 保護的 API。

  4. 選取 設計 索引標籤。

  5. Inbound processing 下,選擇 </> 以打開策略代碼編輯器。

  6. 將以下 <validate-jwt> 標籤放在 <inbound> 策略中,然後執行以下步驟:

    一。 更新 url 元素中的 <openid-config> 值為您的策略知名配置 URL。
    b。 使用應用程式 ID 更新在 B2C 租戶中之前創建的應用程式之<audience>元素(例如 webapp1)。
    丙. 使用您之前記錄的令牌頒發者終端節點來更新<issuer>元素。

    <policies>
        <inbound>
            <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
                <openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" />
                <audiences>
                    <audience>00001111-aaaa-2222-bbbb-3333cccc4444</audience>
                </audiences>
                <issuers>
                    <issuer>https://<tenant-name>.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
                </issuers>
            </validate-jwt>
            <base />
        </inbound>
        <backend> <base /> </backend>
        <outbound> <base /> </outbound>
        <on-error> <base /> </on-error>
    </policies>
    

支援多個應用程式和發行者

多個應用程式通常與單個 REST API 交互。 若要使 API 能夠接受用於多個應用程式的令牌,請將其應用程式 ID 添加到 <audiences> Azure API 管理入站策略中的元素。

<!-- Accept tokens intended for these recipient applications -->
<audiences>
    <audience>00001111-aaaa-2222-bbbb-3333cccc4444</audience>
    <audience>11112222-bbbb-3333-cccc-4444dddd5555</audience>
</audiences>

同樣,若要支援多個令牌頒發者,請將其終結點 URI 添加到 <issuers> Azure API 管理入站策略中的元素。

<!-- Accept tokens from multiple issuers -->
<issuers>
    <issuer>https://<tenant-name>.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
    <issuer>https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
</issuers>

遷移到 b2clogin.com

如果你有一個 Azure API ManagementM API 來驗證舊 login.microsoftonline.com 終結點頒發的令牌,則應遷移 API 和調用它的應用程式,以使用 b2clogin.com 頒發的令牌。

您可以按照以下常規過程執行暫存遷移:

  1. 在 Azure API 管理入站策略中添加對 b2clogin.com 和 login.microsoftonline.com 頒發的令牌的支援。
  2. 一次更新一個應用程式,以從 b2clogin.com 終端節點獲取令牌。
  3. 在所有應用程式都正確地從 b2clogin.com 獲取令牌後,請從 API 中刪除對 login.microsoftonline.com 頒發的令牌的支援。

以下示例 Azure API 管理入站策略演示了如何接受由 b2clogin.com 和 login.microsoftonline.com 頒發的令牌。 此外,該策略還支援來自兩個應用程式的 API 請求。

<policies>
    <inbound>
        <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
            <openid-config url="https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/B2C_1_signupsignin1/v2.0/.well-known/openid-configuration" />
            <audiences>
                <audience>00001111-aaaa-2222-bbbb-3333cccc4444</audience>
                <audience>11112222-bbbb-3333-cccc-4444dddd5555</audience>
            </audiences>
            <issuers>
                <issuer>https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
                <issuer>https://<tenant-name>.b2clogin.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0/</issuer>
            </issuers>
        </validate-jwt>
        <base />
    </inbound>
    <backend> <base /> </backend>
    <outbound> <base /> </outbound>
    <on-error> <base /> </on-error>
</policies>

後續步驟

有關 Azure API 管理策略的其他資訊,請參閱 Azure API 管理策略參考索引

有關將基於 OWIN 的 Web API 及其應用程式遷移到 b2clogin.com 的資訊,請參閱 將基於 OWIN 的 Web API 遷移到 b2clogin.com