重要
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 テナント
- テナントに登録されているアプリケーション
- テナントで作成されたユーザー フロー
- Azure API Management で発行された API
Azure AD B2C アプリケーション ID を取得する
Azure AD B2C を使用して Azure API Management の API をセキュリティで保護する場合は、Azure API Management で作成する 受信ポリシー に複数の値が必要です。 まず、Azure AD B2C テナントで以前に作成したアプリケーションのアプリケーション ID を記録します。 前提条件を満たすために作成したアプリケーションを使用している場合は、 webapp1 のアプリケーション ID を使用します。
Azure AD B2C テナントにアプリケーションを登録するには、新しい統合 アプリ登録 エクスペリエンスまたはレガシ アプリケーション エクスペリエンスを 使用できます。 新しい登録エクスペリエンスの詳細を確認します。
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- 左側のウィンドウで、 Azure AD B2C を選択します。 または、[ すべてのサービス ] を選択し、 Azure AD B2C を検索して選択することもできます。
- [ アプリの登録] を選択し、[ 所有しているアプリケーション ] タブを選択します。
- Webapp1 または以前に作成した別のアプリケーションのアプリケーション (クライアント) ID 列に値を記録します。
トークン発行者エンドポイントを取得する
次に、Azure AD B2C ユーザー フローの 1 つの既知の構成 URL を取得します。 また、Azure API Management でサポートするトークン発行者エンドポイント URI も必要です。
Azure portal で、Azure AD B2C テナントに移動します。
[ポリシー] で [ユーザー フロー] を選択します。
既存のポリシー ( B2C_1_signupsignin1など) を選択し、[ ユーザー フローの実行] を選択します。
ページの上部付近にある [ ユーザー フローの実行 ] 見出しの下に表示されるハイパーリンクに URL を記録します。 この URL は、ユーザー フローの OpenID Connect の既知の検出エンドポイントであり、Azure API Management で受信ポリシーを構成するときに、次のセクションで使用します。
ハイパーリンクを選択して、OpenID Connect の既知の構成ページに移動します。
ブラウザーで開いたページで、
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 呼び出しのみが受け入れられることを確認できます。
Azure portal で、Azure API Management インスタンスに移動します。
[API] を選択します。
Azure AD B2C でセキュリティで保護する API を選択します。
[デザイン] タブを選択します。
[受信処理] で、</> を選択してポリシー コード エディターを開きます。
<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 によって発行されたトークンを使用する必要があります。
この一般的なプロセスに従って、段階的な移行を実行できます。
- b2clogin.com と login.microsoftonline.com の両方によって発行されたトークンに対する Azure API Management 受信ポリシーのサポートを追加します。
- アプリケーションを一度に 1 つずつ更新して、b2clogin.com エンドポイントからトークンを取得します。
- すべてのアプリケーションが 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 に移行する」を参照してください。