> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.generaltranslation.app/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/ja-jp/glossary?term=oath2" tip="OAuth 2.0: 認可プロトコルとワークフローを定義する認可フレームワーク。" cta="用語集の表示">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/ja-jp/get-started/auth0-overview/set-up-apis)」お読みください。

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

<table class="table">
  <thead>
    <tr>
      <th><b>フィールド</b></th>
      <th><b>値</b></th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><b>Name（名前）</b></td>
      <td>`Basic Calculator`</td>
    </tr>

    <tr>
      <td><b>Identifier（識別子）</b></td>
      <td>`basic-calculator`</td>
    </tr>

    <tr>
      <td><b>Signing Algorithm（署名アルゴリズム）</b></td>
      <td>`RS256`</td>
    </tr>
  </tbody>
</table>

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

<div id="create-a-regular-web-application">
  ### 通常のWebアプリケーションを作成
</div>

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アプリケーション）］** を選択します。

<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. **［Applications（アプリケーション）］** ビューに切り替えます。テナント上のすべてのアプリケーションの一覧が表示されます。
6. 以前に作成したアプリケーションを切り替えて、接続用に有効にします。

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

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

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

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

<table class="table">
  <thead>
    <tr>
      <th><b>パラメーター</b></th>
      <th><b>説明</b></th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><b>Name</b></td>
      <td>サービスの名前（サービスのアクセスに必要なURLの作成にも使用される）</td>
    </tr>

    <tr>
      <td><b>Subscription</b></td>
      <td>サービスに使用するAzureサブスクリプションプラン</td>
    </tr>

    <tr>
      <td><b>Resource group</b></td>
      <td>ライフサイクルや権限、ポリシーを共有する<a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-portal">リソース</a>のコレクション。既存のリソースグループを使用するか、新たに作成することができます（作成する場合はグループ名を提供する必要があります）</td>
    </tr>

    <tr>
      <td><b>Location</b></td>
      <td>APIインスタンスをサービスする場所を選択</td>
    </tr>

    <tr>
      <td><b>Organization name</b></td>
      <td>組織の名前</td>
    </tr>

    <tr>
      <td><b>Administrator email</b></td>
      <td>このインスタンスを管理する人のメールアドレス</td>
    </tr>

    <tr>
      <td><b>Pricing tier</b></td>
      <td>希望する価格レベル。これによって、API呼び出しの回数やデータ転送量の上限が決まります。<a href="https://azure.microsoft.com/en-us/pricing/details/api-management/">Developerプラン</a>以上を選択する必要があります。Consumptionプランでは、この統合が動作するのに十分な機能性が提供されていません。</td>
    </tr>
  </tbody>
</table>

4. **［Create（作成）］** を選択してサービスのプロビジョニングを開始します（完了するまでに最大15分かかる場合があります）。

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

このチュートリアルでは、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が完全にインポートされると、概要ページにリダイレクトされます。

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

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. 次のパラメーターを設定します。

<table class="table">
  <thead>
    <tr>
      <th><b>パラメーター</b></th>
      <th><b>説明</b></th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><b>Display name（表示名）</b></td>
      <td>`Auth0`など、認可サーバーのわかりやすい名前を入力します。</td>
    </tr>

    <tr>
      <td><b>Id</b></td>
      <td>このフィールドは入力した表示名に基づいて自動的に入力されます。</td>
    </tr>

    <tr>
      <td><b>Description（説明）</b></td>
      <td>`Auth0 API Authentication`など、認可サーバーの説明を入力します。</td>
    </tr>

    <tr>
      <td><b>Client registration page URL（クライアント登録ページのURL）</b></td>
      <td>placeholderとして`https://placeholder.contoso.com`を入力します。</td>
    </tr>

    <tr>
      <td><b>Authorization code grant types（認可コード付与タイプ）</b></td>
      <td>`Authorization code`を選択します。</td>
    </tr>

    <tr>
      <td><b>Authorization endpoint URL（認可エンドポイントURL）</b></td>
      <td>テナントの<a href="https://{yourDomain}/.well-known/openid-configuration">OIDCディスカバリーエンドポイント</a>を参照して`audience`パラメーターを追加します。例：`https://{yourDomain}/authorize?audience={API_AUDIENCE}`</td>
    </tr>

    <tr>
      <td><b>Authorization request method（認可要求メソッド）</b></td>
      <td>デフォルトは`GET`です。</td>
    </tr>

    <tr>
      <td><b>Token endpoint URL（トークンエンドポイントURL）</b></td>
      <td>テナントの<a href="https://{yourDomain}/.well-known/openid-configuration">OIDCディスカバリーエンドポイント</a>を参照します。</td>
    </tr>

    <tr>
      <td><b>Client authentication methods（クライアントの認証方法）</b></td>
      <td>`Basic`を選択します。</td>
    </tr>

    <tr>
      <td><b>Access Token sending method（アクセストークンの送信方法）</b></td>
      <td>`Authorization header`を選択します。</td>
    </tr>

    <tr>
      <td><b>Default scope（デフォルトのスコープ）</b></td>
      <td>必要ならば、デフォルトの<Tooltip id="react-containers-DefinitionTooltip-1">スコープ</Tooltip>を指定します。</td>
    </tr>
  </tbody>
</table>

4. **［Client Credentials（クライアント資格情報）］** セクションで、 **［Client Credentials（クライアントID）］** フィールドにAuth0 ApplicationsクライアントIDと **［Client secret（クライアントシークレット）］** フィールドにクライアントシークレットを入力します。
5. **［Redirect URI（リダイレクト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. ナビゲーションの **［API］** セクションの下で、 **API** を選択します。
2. Basic Calculator APIを選択し、 **［Design（デザイン）］** ビューに移動します。
3. **［Settings（設定）］** ビューに切り替えます。
4. **セキュリティ** セクションに移動し、 **\[ユーザー認可]** で **\[OAuth 2.0]** を選択します。
5. **［Authorization Server（認可サーバー）］** フィールドの前のステップで構成したサーバーを選択します。
6. **［Save（保存）］** をクリックします。

<div id="set-the-allowed-callback-url-in-auth0">
  ## Auth0で許可されたCallbackURLを設定
</div>

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

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

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

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`応答を含むメッセージが表示されます。

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

前のステップでは、ユーザーが開発者コンソールから呼び出しを行おうとすると、サインインするように求められます。開発者コンソールは、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のドキュメントを参照してください。
