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

# Azure API Managementとの統合

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

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

[Azure API Management](https://azure.microsoft.com/en-us/services/api-management/)サービスを使用すると、新しいAPIを作成したり、既存のAPI定義をインポートしたり、承認されたオーディエンスが使用して公開したりできます。Auth0 を使用すると、APIユーザーの認証（<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" href="/docs/ja-jp/glossary?term=oath2" tip="OAuth 2.0: 認可プロトコルとワークフローを定義する認可フレームワーク。" cta="用語集の表示">OAuth 2.0</Tooltip>標準を使用）が簡単になります。

このチュートリアルでは、Azure API Managementによって管理されるBasic Calculator APIにユーザーがアクセスするときに、Auth0を使用してユーザーを認証および承認する方法について説明します。

## Auth0を構成する

### APIの作成

Azure API Management Serviceによって管理されるAPIを表すために、Auth0でAPIを作成する必要があります。詳細については、「[APIを登録する](/docs/ja-jp/get-started/auth0-overview/set-up-apis)」お読みください。

1. [［Auth0 Dashboard］>［Applications（アプリケーション）］>［API］](https://manage.auth0.com/#/apis)に移動して、 **［Create API（APIの作成）］** を選択します。
2. 次のパラメーターを設定します。

| フィールド                           | 値                  |
| ------------------------------- | ------------------ |
| **Name（名前）**                    | `Basic Calculator` |
| **Identifier（識別子）**             | `basic-calculator` |
| **Signing Algorithm（署名アルゴリズム）** | `RS256`            |

3. **［Create（作成）］** を選択します。

### 通常のWebアプリケーションを作成

Auth0で通常のWebアプリケーション（RWA）を作成して、AzureのOAuth 2.0認可サーバーと通信する必要があります。

1. [［Auth0 Dashboard］>［Applications（アプリケーション）］>［Applications（アプリケーション）］](https://manage.auth0.com/#/applications)に移動して、 **［Create Application（アプリケーションの作成）］** ボタンを選択します。
2. アプリケーションの **［Name（名前）］** を入力し、アプリケーションのタイプとして **［Regular Web Applications（通常のWebアプリケーション）］** を選択します。

### 接続を作成して有効化

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

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

### ユーザーを作成

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  すでにユーザーセットがある場合は、ユーザーをインポートするか、[カスタムデータベース接続](/docs/ja-jp/connections/database/mysql)を作成することができます。
</Callout>

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

1. [［Auth0 Dashboard］>［User Management（ユーザー管理）］>［Users（ユーザー）］](https://manage.auth0.com/#/users)に移動して、 **［Create User（ユーザーの作成）］** を選択します。
2. **電子メール** と **パスワード** を入力し、［ **接続** ］フィールドで、ステップ3で作成した接続を選択します。
3. **［Create（作成）］** を選択します。

## Azureを構成

### Azure API Management Serviceの作成

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

1. ナビゲーションバーで、 **［Create a resource（リソースの作成）］** を選択します。
2. リダイレクトされたら、 **Web** > **API Management** を選択します。
3. 次の構成変数を指定します。

| パラメーター                  | 説明                                                                                                                                                                                        |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**                | サービスの名前（サービスのアクセスに必要なURLの作成にも使用される）                                                                                                                                                       |
| **Subscription**        | サービスに使用するAzureサブスクリプションプラン                                                                                                                                                                |
| **Resource group**      | ライフサイクルや権限、ポリシーを共有する[リソース](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-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分かかる場合があります）。

### サンプルAPIのインポート

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

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

### OAuth 2.0認可サーバーの設定

Auth0を使用してAzure APIをセキュリティで保護するには、Auth0をOAuth 2.0認可サーバーとして登録する必要があります。

1. ナビゲーションバーの近くのAPI管理サービスインスタンスの **OAuth 2.0 + OpenID Connect** エリアを見つけます。 **［OAuth 2.0］** を選択し、 **［Add（追加）］** を選択します。
2. **［Add OAuth2 service（OAuth2サービスの構成の追加）］** 構成画面に移動し、［Authorization Code grant type（認可コードの付与タイプ）］を選択します。
3. 次のパラメーターを設定します。

| パラメーター                                            | 説明                                                                                                                                                                      |
| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Display name（表示名）**                             | `Auth0`など、認可サーバーのわかりやすい名前を入力します。                                                                                                                                        |
| **Id**                                            | このフィールドは入力した表示名に基づいて自動的に入力されます。                                                                                                                                         |
| **Description（説明）**                               | `Auth0 API Authentication`など、認可サーバーの説明を入力します。                                                                                                                           |
| **Client registration page URL（クライアント登録ページのURL）** | placeholderとして`https://placeholder.contoso.com`を入力します。                                                                                                                  |
| **Authorization code grant types（認可コード付与タイプ）**    | `Authorization code`を選択します。                                                                                                                                             |
| **Authorization endpoint URL（認可エンドポイントURL）**      | テナントの[OIDCディスカバリーエンドポイント](https://\{yourDomain}/.well-known/openid-configuration)を参照して`audience`パラメーターを追加します。例：`https://{yourDomain}/authorize?audience={API_AUDIENCE}` |
| **Authorization request method（認可要求メソッド）**        | デフォルトは`GET`です。                                                                                                                                                          |
| **Token endpoint URL（トークンエンドポイントURL）**            | テナントの[OIDCディスカバリーエンドポイント](https://\{yourDomain}/.well-known/openid-configuration)を参照します。                                                                                |
| **Client authentication methods（クライアントの認証方法）**    | `Basic`を選択します。                                                                                                                                                          |
| **Access Token sending method（アクセストークンの送信方法）**    | `Authorization header`を選択します。                                                                                                                                           |
| **Default scope（デフォルトのスコープ）**                     | 必要ならば、デフォルトのスコープを指定します。                                                                                                                                                 |

4. **［Client Credentials（クライアント資格情報）］** セクションで、 **［Client Credentials（クライアントID）］** フィールドにAuth0 ApplicationsクライアントIDと **［Client secret（クライアントシークレット）］** フィールドにクライアントシークレットを入力します。
5. **［Redirect URI（リダイレクトURI）］** ビューに切り替え、 **［Authorization code flow grant］（認可コードフローの付与）］** フィールドのURI値をコピーします。
6. **［Create（作成）］** を選択します。

### Auth0を使用するようにAzure APIを構成します

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

1. ナビゲーションの **［API］** セクションの下で、 **API** を選択します。
2. Basic Calculator APIを選択し、 **［Design（デザイン）］** ビューに移動します。
3. **［Settings（設定）］** ビューに切り替えます。
4. **セキュリティ** セクションに移動し、 **\[ユーザー認可]** で **\[OAuth 2.0]** を選択します。
5. **［Authorization Server（認可サーバー）］** フィールドの前のステップで構成したサーバーを選択します。
6. **［Save（保存）］** をクリックします。

## Auth0で許可されたCallbackURLを設定

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

1. [［Auth0 Dashboard］>［Applications（アプリケーション）］>［Applications（アプリケーション）］](https://manage.auth0.com/#/applications)に移動します。
2. アプリケーションを選択し、次に **［Settings（設定）］** ビューに切り替えます。
3. を **［Allowed Callback URL（許可されたコールバックURL）］** フィールドに入力します。
4. **［Save（保存）］** をクリックします。

## 統合のテスト

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

1. **［Developer Console（開発者コンソール）］** を選択して、開発者向けのAPIを起動します。
2. **［API］** > **［Basic Calculator］** に移動します。これにより、2つの整数を追加できる`［GET］` 呼び出しを行うことができるページが開きます。
3. **［Try It（試す）］** を選択します。これにより、呼び出しのパラメーターを提供できるページが表示されます。
4. **［Authorization（認可）］** セクションに移動し、 **［Authorization Code（認可コード）］** （ **Auth0** フィールドの横）を選択します。
5. Auth0ログインウィジェットがポップアップウィンドウに表示されます（表示されない場合は、ブラウザのpop-upブロック機能が無効になっていることを確認してください）。ステップ4で作成したAuth0ユーザーの資格情報を入力し、ログインします。
6. 正常にログインできた場合は、APIの呼び出しに使用できるアクセストークンの有効期限を示すメッセージが表示されます。
7. 下部に移動し、 **［Send（送信）］** を選択します。要求が成功すると、ページの下部に`HTTP 200`応答を含むメッセージが表示されます。

### アクセストークンのJWT検証ポリシーを構成

前のステップでは、ユーザーが開発者コンソールから呼び出しを行おうとすると、サインインするように求められます。開発者コンソールは、API要求に含めるアクセストークンをユーザーの代わりに取得しようとします。すべてのアクセストークンは、`Authorization（認可）`ヘッダーを介してAPIに渡されます。

各要求に含まれるアクセストークンを検証する場合は、[Validate JWT（JWTの検証）](https://docs.microsoft.com/en-us/azure/api-management/api-management-access-restriction-policies#ValidateJWT)ポリシーを使用して行うことができます。[setting an API Management policy（API管理ポリシーの設定）](https://docs.microsoft.com/en-us/azure/api-management/set-edit-policies)については、Microsoftのドキュメントを参照してください。
