> ## 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 にアクセスするユーザーを認証するために、OAuth 2.0 サーバーとして Auth0 を使用する

# 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="/docs/ja-jp/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 を表すために、Auth0 で API を作成する必要があります。詳しくは、[API を登録する](/docs/ja-jp/get-started/auth0-overview/set-up-apis)を参照してください。

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

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

<div id="create-a-regular-web-application">
  ### 従来型Webアプリケーションを作成する
</div>

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

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

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

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. **アプリケーション** ビューに切り替えると、テナント内のすべてのアプリケーションの一覧が表示されます。
6. 先ほど作成したアプリケーションのトグルをオンにして、その接続で有効にします。

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

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

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

1. [Auth0 Dashboard > User Management > Users](https://manage.auth0.com/#/users) に移動し、**Create User** を選択します。
2. **Email** と **Password** を入力し、**Connection** フィールドで手順 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. 次の設定項目を入力します。

   | Parameter               | Description                                                                                                                                                                                               |
   | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | **Name**                | サービスの名前です (この名前は、サービスへのアクセスに必要な URL の作成にも使用されます)                                                                                                                                                          |
   | **Subscription**        | このサービスで使用する Azure のサブスクリプション プラン                                                                                                                                                                          |
   | **Resource group**      | ライフサイクル、権限、ポリシーを共有する[リソース](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resources-portal)のグループです。既存のリソース グループを使用することも、新しく作成することもできます (新しく作成する場合は、グループ名を指定する必要があります)   |
   | **Location**            | API インスタンスをホストする場所を選択します                                                                                                                                                                                  |
   | **Organization name**   | organization の名前                                                                                                                                                                                          |
   | **Administrator email** | このインスタンスを管理する担当者のメール アドレス                                                                                                                                                                                 |
   | **Pricing tier**        | 使用する料金レベルです。これにより、API に対して実行できる呼び出し回数と、許可されるデータ転送量の上限が決まります。[Developer plan](https://azure.microsoft.com/en-us/pricing/details/api-management/) 以上を選択する必要があります。Consumption plan では、この連携に必要な機能が十分に提供されません。 |
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 Service インスタンスの **OAuth 2.0 + OpenID Connect** 領域を見つけます。**OAuth 2.0** を選択し、次に **Add** を選択します。
2. **Add OAuth2 service** の設定画面に移動し、認可コードのグラントタイプを選択します。
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` を選択します。                                                                                                                                                                   |
   | **Access Token sending method**    | `Authorization header` を選択します。                                                                                                                                                    |
   | **Default scope**                  | 必要に応じて、デフォルトの [scope](/docs/ja-jp/glossary?term=scope) を指定します。                                                                                                                    |
4. **Client Credentials** セクションで、**Client ID** フィールドに Auth0 アプリケーションの Client ID を入力し、**Client secret** フィールドに Client Secret を入力します。
5. **Redirect URI** ビューに切り替え、**Authorization code flow grant** フィールドの URI 値をコピーします。
6. **Create** を選択します。

<div id="configure-azure-api-to-use-auth0">
  ### Auth0 を使用するように Azure API を設定する
</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 > アプリケーション > アプリケーション](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** セクションに移動し、**認可コード** (**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 の形式の Authorization 資格情報。" cta="用語集を見る" href="/docs/ja-jp/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 のドキュメントを参照してください。
