次の方法で共有


Azure AD B2C を使用して Azure API Management API をセキュリティで保護する

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

Azure API Management API へのアクセスを、Azure Active Directory B2C (Azure AD B2C) で認証されたクライアントに制限する方法について説明します。 この記事の手順に従って、有効な Azure AD B2C によって発行されたアクセス トークンを含む要求のみにアクセスを制限する受信ポリシーを Azure API Management で作成してテストします。

[前提条件]

開始する前に、次のリソースが配置されていることを確認します。

Azure AD B2C アプリケーション ID を取得する

Azure AD B2C を使用して Azure API Management の API をセキュリティで保護する場合は、Azure API Management で作成する 受信ポリシー に複数の値が必要です。 まず、Azure AD B2C テナントで以前に作成したアプリケーションのアプリケーション ID を記録します。 前提条件を満たすために作成したアプリケーションを使用している場合は、 webapp1 のアプリケーション ID を使用します。

Azure AD B2C テナントにアプリケーションを登録するには、新しい統合 アプリ登録 エクスペリエンスまたはレガシ アプリケーション エクスペリエンスを 使用できます。 新しい登録エクスペリエンスの詳細を確認します。

  1. Azure portal にサインインします。
  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
  3. 左側のウィンドウで、 Azure AD B2C を選択します。 または、[ すべてのサービス ] を選択し、 Azure AD B2C を検索して選択することもできます。
  4. [ アプリの登録] を選択し、[ 所有しているアプリケーション ] タブを選択します。
  5. Webapp1 または以前に作成した別のアプリケーションのアプリケーション (クライアント) ID 列に値を記録します。

トークン発行者エンドポイントを取得する

次に、Azure AD B2C ユーザー フローの 1 つの既知の構成 URL を取得します。 また、Azure API Management でサポートするトークン発行者エンドポイント URI も必要です。

  1. Azure portal で、Azure AD B2C テナントに移動します。

  2. [ポリシー][ユーザー フロー] を選択します。

  3. 既存のポリシー ( B2C_1_signupsignin1など) を選択し、[ ユーザー フローの実行] を選択します。

  4. ページの上部付近にある [ ユーザー フローの実行 ] 見出しの下に表示されるハイパーリンクに URL を記録します。 この URL は、ユーザー フローの OpenID Connect の既知の検出エンドポイントであり、Azure API Management で受信ポリシーを構成するときに、次のセクションで使用します。

    Azure portal の [ユーザー フローの実行] ページにある既知の URI ハイパーリンクのスクリーンショット。

  5. ハイパーリンクを選択して、OpenID Connect の既知の構成ページに移動します。

  6. ブラウザーで開いたページで、 issuer 値を記録します。 例えば次が挙げられます。

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

    この値は、Azure API Management で API を構成するときに、次のセクションで使用します。

次のセクションで使用するために、OpenID Connect の既知の構成エンドポイント URL と発行者 URI という 2 つの URL を記録する必要があります。 例えば次が挙げられます。

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 Management で受信ポリシーを構成する

これで、API 呼び出しを検証する受信ポリシーを Azure API Management に追加する準備ができました。 アクセス トークンの対象ユーザーと発行者を検証する JSON Web トークン (JWT) 検証 ポリシーを追加することで、有効なトークンを持つ API 呼び出しのみが受け入れられることを確認できます。

  1. Azure portal で、Azure API Management インスタンスに移動します。

  2. [API] を選択します。

  3. Azure AD B2C でセキュリティで保護する API を選択します。

  4. [デザイン] タブを選択します。

  5. [受信処理] で、</> を選択してポリシー コード エディターを開きます。

  6. <validate-jwt> ポリシー内に次の<inbound> タグを配置し、次の操作を行います。

    ある。 url要素の<openid-config>値を、ポリシーの既知の構成 URL で更新します。
    b。 <audience>要素を、前に B2C テナントで作成したアプリケーションのアプリケーション ID (webapp1 など) で更新します。
    c. <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>
    

複数のアプリケーションと発行者をサポートする

通常、複数のアプリケーションが 1 つの REST API と対話します。 API が複数のアプリケーション用のトークンを受け入れるようにするには、Azure API Management 受信ポリシーの <audiences> 要素にアプリケーション ID を追加します。

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

同様に、複数のトークン発行者をサポートするには、エンドポイント URI を Azure API Management 受信ポリシーの <issuers> 要素に追加します。

<!-- 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 に移行する

レガシ login.microsoftonline.com エンドポイントによって発行されたトークンを検証する Azure API ManagementM API がある場合は、API とそれを呼び出すアプリケーションを移行して、 b2clogin.com によって発行されたトークンを使用する必要があります。

この一般的なプロセスに従って、段階的な移行を実行できます。

  1. b2clogin.com と login.microsoftonline.com の両方によって発行されたトークンに対する Azure API Management 受信ポリシーのサポートを追加します。
  2. アプリケーションを一度に 1 つずつ更新して、b2clogin.com エンドポイントからトークンを取得します。
  3. すべてのアプリケーションが b2clogin.com からトークンを正しく取得したら、API から login.microsoftonline.com 発行されたトークンのサポートを削除します。

次の Azure API Management 受信ポリシーの例は、b2clogin.com と login.microsoftonline.com の両方によって発行されたトークンを受け入れる方法を示しています。 さらに、このポリシーは 2 つのアプリケーションからの 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 Management ポリシーの詳細については、 Azure API Management ポリシーのリファレンス インデックスを参照してください。

OWIN ベースの Web API とそのアプリケーションを b2clogin.com に移行する方法については、「 OWIN ベースの Web API を b2clogin.com に移行する」を参照してください。