> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Azure API Management サービスで管理される API へのアクセスを必要とするユーザーを認証するために、Auth0 を OAuth 2.0 サーバーとして使用する

# Azure API Management との統合

<Card title="始める前に">
  [Azure Portal](https://azure.microsoft.com/en-us) にアクセスできる Microsoft アカウントが必要です。
</Card>

[Azure API Management](https://azure.microsoft.com/en-us/products/api-management/) サービスでは、新しい API を作成したり、既存の API 定義をインポートしたりして、承認された利用者向けに公開できます。Auth0 を使用すると、API を利用するユーザーの認可を (<Tooltip tip="OAuth 2.0: 認可プロトコルとワークフローを定義する認可フレームワーク。" cta="用語集を見る" href="/ja/docs/glossary?term=OAuth+2.0">OAuth 2.0</Tooltip> 標準に基づいて) 簡単に実装できます。

このチュートリアルでは、Azure API Management で管理される Basic Calculator API にユーザーがアクセスする際に、Auth0 を使用して認証と認可を行う方法を学びます。

<div id="configure-auth0">
  ## Auth0 を設定する
</div>

<div id="create-an-api">
  ### API を作成する
</div>

Azure API Management Service で管理する API を表す API を Auth0 で作成する必要があります。詳細については、[Register APIs](/ja/docs/get-started/auth0-overview/set-up-apis) を参照してください。

1. [Auth0 Dashboard > Applications > APIs](https://manage.auth0.com/#/apis) に移動し、**Create API** を選択します。
2. 次のパラメーターを設定します。

   | フィールド          | 値                  |
   | -------------- | ------------------ |
   | **名前**         | `Basic Calculator` |
   | **Identifier** | `basic-calculator` |
   | **署名アルゴリズム**   | `RS256`            |
3. **Create** を選択します。

<div id="create-a-regular-web-application">
  ### Regular Web Application を作成する
</div>

Azure の OAuth 2.0 <Tooltip tip="認可サーバー: ユーザーのアクセス範囲の定義に関与する集中型サーバー。たとえば、認可サーバーはユーザーが利用できるデータ、タスク、機能を制御できます。" cta="用語集を見る" href="/ja/docs/glossary?term=authorization+server">認可サーバー</Tooltip> と通信するには、Auth0 で Regular Web Application (RWA) を作成する必要があります。

1. [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/#/applications) に移動し、**Create Application** を選択します。
2. アプリケーションの**名前**を入力し、アプリケーションの種類として **Regular Web Applications** を選択します。

<div id="create-and-enable-a-connection">
  ### 接続を作成して有効にする
</div>

Auth0 で接続を作成し、アプリケーションで有効化する必要があります。

1. [Auth0 Dashboard > Authentication > Database](https://manage.auth0.com/#/connections/database) に移動し、**Create DB Connection** を選択します。
2. 接続の **名前** を入力します。ユーザーのソースが分かる名前にすることをお勧めします (たとえば、Facebook の認証情報を使用するユーザーを含む接続なら `Facebook`、ユーザーがサイト上でサインアップするデータベース接続なら `site-sign-ups` など) 。
3. **Create** を選択します。
4. 接続の **Settings** ページに移動します。
5. **Applications** ビューに切り替えると、テナント内のすべてのアプリケーションの一覧が表示されます。
6. 先ほど作成したアプリケーションをオンにして、その接続で有効化します。

<div id="create-a-user">
  ### ユーザーを作成する
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  すでにユーザーの一覧がある場合は、それらをインポートするか、[カスタムデータベース接続](/ja/docs/authenticate/database-connections/custom-db)を作成できます。
</Callout>

認証と認可をテストするには、接続に少なくとも 1 人のユーザーが必要です。接続に既存のユーザーがいない場合は、手動で作成できます。

1. [Auth0 Dashboard > User Management > Users](https://manage.auth0.com/#/users) に移動し、**Create User** を選択します。
2. **Email** と **Password** を入力し、**接続** フィールドで手順 3 で作成した接続を選択します。
3. **Create** を選択します。

<div id="configure-azure">
  ## Azure の設定
</div>

<div id="create-azure-api-management-service">
  ### Azure API Management Service を作成する
</div>

API を管理するには、Azure で API Management Service インスタンスを作成する必要があります。

1. ナビゲーション バーで、**Create a resource** を選択します。
2. 画面が切り替わったら、**Web** > **API Management** を選択します。
3. 次の設定項目を指定します。

   | パラメーター                  | 説明                                                                                                                                                                                                        |
   | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | **Name**                | サービスの名前です (この名前は、サービスへのアクセスに必要な URL の作成にも使用されます)                                                                                                                                                          |
   | **Subscription**        | このサービスで使用する Azure サブスクリプション プラン                                                                                                                                                                           |
   | **Resource group**      | ライフサイクル、アクセス許可、ポリシーを共有する[リソース](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resources-portal)の集合です。既存のリソース グループを使用することも、新しく作成することもできます (新しく作成する場合は、グループ名を指定する必要があります) |
   | **Location**            | API インスタンスをホストする場所を選択します                                                                                                                                                                                  |
   | **Organization name**   | 組織の名前                                                                                                                                                                                                     |
   | **Administrator email** | このインスタンスを管理する担当者のメールアドレス                                                                                                                                                                                  |
   | **Pricing tier**        | 使用する価格レベルです。これにより、API に対して実行できる呼び出し回数と、許可されるデータ転送量の上限が決まります。[Developer プラン](https://azure.microsoft.com/en-us/pricing/details/api-management/)以上を選択する必要があります。Consumption プランでは、この統合に必要な機能を利用できません。        |
4. **Create** を選択して、サービスのプロビジョニングを開始します (完了まで最大 15 分かかる場合があります) 。

<div id="import-the-sample-api">
  ### サンプル API をインポートする
</div>

このチュートリアルでは、Microsoft が提供する Basic Calculator API をインポートして使用します。詳しい手順については、Microsoft の [Import and Publish Your First API](https://docs.microsoft.com/en-us/azure/api-management/import-and-publish#go-to-your-api-management-instance) を参照してください。

完了したら、**Create** を選択して API をインポートします。インポートが完了すると、API の概要ページにリダイレクトされます。

<div id="configure-an-oauth-20-authorization-server">
  ### OAuth 2.0 認可サーバーを設定する
</div>

Azure API を Auth0 で保護するには、Auth0 を OAuth 2.0 認可サーバーとして登録する必要があります。

1. ナビゲーション バー付近にある API Management サービス インスタンスの **OAuth 2.0 + OpenID Connect** 領域を見つけます。**OAuth 2.0** を選択し、**Add** を選択します。
2. **Add OAuth2 service** の設定画面に移動し、Authorization Code グラントタイプを選択します。
3. 次のパラメーターを設定します。

   | パラメーター                             | 説明                                                                                                                                                                                |
   | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | **Display name**                   | `Auth0` など、認可サーバーの内容がわかる名前を入力します。                                                                                                                                                 |
   | **Id**                             | このフィールドは、入力した表示名に基づいて自動入力されます。                                                                                                                                                    |
   | **Description**                    | `Auth0 API Authentication` など、認可サーバーの説明を入力します。                                                                                                                                    |
   | **Client registration page URL**   | プレースホルダーとして `https://placeholder.contoso.com` を入力します。                                                                                                                             |
   | **Authorization code grant types** | `Authorization code` を選択します。                                                                                                                                                      |
   | **Authorization endpoint URL**     | テナントの [OIDC Discovery endpoint](https://\{yourDomain}/.well-known/openid-configuration) を参照し、`audience` パラメーターを追加します。例: `https://{yourDomain}/authorize?audience={API_AUDIENCE}`。 |
   | **Authorization request method**   | デフォルトは `GET` です。                                                                                                                                                                  |
   | **Token endpoint URL**             | テナントの [OIDC Discovery endpoint](https://\{yourDomain}/.well-known/openid-configuration) を参照します。                                                                                   |
   | **Client authentication methods**  | `Basic` を選択します。                                                                                                                                                                   |
   | **アクセストークン sending method**        | `Authorization header` を選択します。                                                                                                                                                    |
   | **Default scope**                  | 必要に応じて、デフォルトの [スコープ](/ja/docs/glossary?term=scope) を指定します。                                                                                                                        |
4. **Client Credentials** セクションで、**Client ID** フィールドに Auth0 アプリケーションのクライアントID を入力し、**Client secret** フィールドにクライアントシークレットを入力します。
5. **Redirect URI** ビューに切り替え、**Authorization code flow grant** フィールドの URI 値をコピーします。
6. **Create** を選択します。

<div id="configure-azure-api-to-use-auth0">
  ### Azure API が Auth0 を使用するように設定する
</div>

Azure で OAuth 2.0 の認可サーバーを作成したら、ユーザー認可に Auth0 を使用するよう Azure API を更新する必要があります。

1. ナビゲーションの **APIs** セクションで、**APIs** を選択します。
2. Basic Calculator API を選択し、**Design** ビューに移動します。
3. **Settings** ビューに切り替えます。
4. **Security** セクションに移動し、**User Authorization** で **OAuth 2.0** を選択します。
5. **Authorization Server** フィールドで、前の手順で設定したサーバーを選択します。
6. **Save** をクリックします。

<div id="set-the-allowed-callback-url-in-auth0">
  ## Auth0 で Allowed Callback URL を設定する
</div>

Azure API のプロビジョニングが完了し、ユーザー認可に Auth0 を使用するよう設定したら、Auth0 アプリケーションを更新する必要があります。

1. [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/#/applications) に移動します。
2. アプリケーションを選択し、**Settings** ビューに切り替えます。
3. 先ほどコピーした Redirect URI を **Allowed Callback URLs** フィールドに入力します。
4. **Save** をクリックします。

<div id="test-the-integration">
  ## 統合をテストする
</div>

Azure Portal で、API Management Service のインスタンスを開きます。

1. **Developer Console** を選択して、API の開発者向け画面を開きます。
2. **APIs** > **Basic Calculator** に移動します。2 つの整数を加算する `GET` 呼び出しを実行できるページが開きます。
3. **Try It** を選択します。呼び出しのパラメーターを指定できるページが表示されます。
4. **Authorization** セクションに移動し、**Authorization Code** (**Auth0** フィールドの横) を選択します。
5. Auth0 のログインウィジェットが表示されたポップアップ ウィンドウが開きます (表示されない場合は、ブラウザーでポップアップ ブロッカーが無効になっていることを確認してください) 。手順 4 で作成した Auth0 ユーザーの認証情報を入力して、ログインします。
6. 正常にログインできると、API の呼び出しに使用できるアクセストークンの有効期限を示すメッセージが表示されます。
7. ページの一番下まで移動し、**Send** を選択します。リクエストが成功すると、ページ下部に `HTTP 200` レスポンスを含むメッセージが表示されます。

<div id="configure-a-jwt-validation-policy-for-access-tokens">
  ### アクセストークンの JWT 検証ポリシーを設定する
</div>

前の手順では、Developer Console から呼び出しを行おうとすると、ユーザーにサインインが求められます。Developer Console は、API リクエストに含めるために、ユーザーに代わって<Tooltip tip="アクセストークン: API へのアクセスに使用される、不透明な文字列または JWT 形式の認可資格情報。" cta="用語集を見る" href="/ja/docs/glossary?term=Access+Token">アクセストークン</Tooltip>の取得を試みます。すべてのアクセストークンは、`Authorization` ヘッダーを介して API に渡されます。

各リクエストに含まれるアクセストークンを検証するには、[Validate JWT policy](https://learn.microsoft.com/en-us/azure/api-management/validate-jwt-policy) を使用できます。[API Management ポリシーの設定](https://learn.microsoft.com/en-us/azure/api-management/set-edit-policies?tabs=form)に関する Microsoft のドキュメントを参照してください。
