> ## 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.

> Server + API アーキテクチャ シナリオ向けの Auth0 の設定

# Auth0 の設定 (サーバーアプリ + API)

このセクションでは、[Auth0 Dashboard](https://manage.auth0.com/#) での ExampleCo の設定を確認します。

<div id="configure-the-api">
  ## API を設定する
</div>

API を保護するには、<Tooltip tip="Auth0 Dashboard: サービスを設定するための Auth0 の主要製品。" cta="用語集を表示" href="/ja/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> で API を登録する必要があります。タイムシート API を設定するには、[API を登録する](/ja/docs/get-started/auth0-overview/set-up-apis) の手順に従ってください。

<div id="json-web-token-profile">
  ### JSON Web Token プロファイル
</div>

<Tooltip tip="アクセストークン: API へのアクセスに使用される、不透明な文字列または JWT 形式の認可資格情報。" cta="用語集を表示" href="/ja/docs/glossary?term=OAuth+2.0">OAuth 2.0</Tooltip> では、<Tooltip tip="OAuth 2.0: 認可プロトコルとワークフローを定義する認可フレームワーク。" cta="用語集を表示" href="/ja/docs/glossary?term=access+token">アクセストークン</Tooltip> のプロファイル (方言) を定義しています。Auth0 は 2 種類のプロファイルをサポートしています。

* Auth0 トークンプロファイル
* RFC 9068 プロファイル

既定では Auth0 プロファイルが使用されます。これら 2 つのプロファイルの主な違いは、クレーム名です。Auth0 プロファイルでは、`client_id` ではなく `azp` を使用します。違いの詳細については、[アクセストークンプロファイル](/ja/docs/secure/tokens/access-tokens/access-token-profiles) を参照してください。

<div id="signing-algorithms">
  ### 署名アルゴリズム
</div>

API を作成する際は、トークンの署名に使用するアルゴリズムを選択する必要があります。署名は、<Tooltip tip="JSON Web Token（JWT）: 2者間でクレームを安全に表現するために使用される標準的な IDトークン 形式（多くの場合、アクセストークン の形式としても使用）。" cta="用語集を表示" href="/ja/docs/glossary?term=JWT">JWT</Tooltip> の送信者が名乗っている本人であることを検証し、メッセージが途中で改ざんされていないことを保証するために使用されます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  署名は JWT の一部です。JWT の構造に不慣れな場合は、[JSON Web Token Structure](/ja/docs/secure/tokens/json-web-tokens/json-web-token-structure) を参照してください。
</Callout>

署名を作成するには、エンコードされたヘッダー、エンコードされたペイロード、シークレット、およびヘッダーで指定されたアルゴリズムを使って署名する必要があります。JWT ヘッダーの一部であるそのアルゴリズムが、API に対して選択するものです: `HS256,` `RS256,` または `PS256`。

最も安全で、Auth0 が推奨する方法は **RS256** を使用することです。理由の一部を以下に示します。

* RS256 では、秘密鍵の保有者 (Auth0) のみがトークンに署名でき、公開鍵を使って誰でもトークンが有効かどうかを確認できます。
* HS256 では、秘密鍵が侵害された場合、新しいシークレットを使用して API を再デプロイする必要があります。RS256 では、複数のオーディエンスに対して有効なトークンをリクエストできます。
* RS256 では、新しいシークレットを使って API を再デプロイしなくても、鍵のローテーションを実装できます。

<div id="configure-the-scopes">
  ## Scopes を設定する
</div>

API の設定で、アプリケーションが認可時にリクエストできる Scopes を設定する必要があります。`Permissions` タブに移動します。

このセクションでは、前述のスコープ `batch:upload`、`read:timesheets`、`create:timesheets`、`delete:timesheets`、`approve:timesheets` を追加できます。さらに、追加のスコープとして `batch:upload` も追加します。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  このドキュメントでは、cron ジョブに必要なのが `batch:upload` スコープのみであるため、このスコープだけを扱います。ただし、網羅性のために、今後のアプリケーションで必要になるスコープも追加しています。
</Callout>

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=984a687f31394ba988ee0fab7d17cbd6" alt="Dashboard > APIs > Permissions" data-og-width="1052" width="1052" data-og-height="916" height="916" data-path="docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=280&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=05b898db508fefe58f8bd0772a2b8524 280w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=560&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=46fb3e9f26d4c510520fb22c3e3f384f 560w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=840&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=ad8d50ab117ebfcf15912063db00223b 840w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=1100&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=2e8baf95a9cb5458e18a3e33f85d1907 1100w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=1650&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=35936c5bcb16f76e20050277830c5a85 1650w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=2500&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=142c44e382cef4c14693c8c5de2a007f 2500w" />
</Frame>

<div id="create-the-application">
  ## アプリケーションを作成する
</div>

Auth0 Dashboard で API を作成すると、その API 用のテストアプリケーションが自動的に自動生成されます。Auth0 Dashboard で [Application Section](https://manage.auth0.com/#/applications) に移動すると、タイムシート API のテストアプリケーションが表示されます。

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7lnuzFgs3IuWyL4bK5aVZV/05abca8035c011bf018b27e31f77a055/2024-06-28_17-13-34.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=ea4f117201217b98bdc02e90814df66a" alt="undefined" width="1552" height="760" data-path="docs/images/cdy7uua7fh8z/7lnuzFgs3IuWyL4bK5aVZV/05abca8035c011bf018b27e31f77a055/2024-06-28_17-13-34.png" />
</Frame>

右端のメニューオプションを選択して、アプリケーションの設定を開きます。アプリケーションの名前を `Timesheets Import Job` に変更します。

cron ジョブには、マシン間アプリケーションが必要です。API の作成時に生成されたテストアプリケーションは、自動的にマシン間アプリケーションとして構成されています。

<div id="configure-applications-access-to-the-api">
  ## アプリケーションの API へのアクセスを設定する
</div>

最後に、アプリケーションが Timesheets API にアクセスできるようにする必要があります。API の設定画面に戻り、Machine to Machine Application タブを選択します。

一覧に **Timesheets Import Job** アプリケーションが表示され、アプリケーション名の右側にあるスイッチが `Authorized` になっていれば、そのアプリケーションに API へのアクセスが許可されていることを確認できます。`Authorized` になっていない場合は、スイッチを `Unauthorized` から `Authorized` に切り替えてください。

また、アプリケーションが Auth0 で認可される際に、そのアプリケーションに発行されるアクセストークンに含めるスコープも指定する必要があります。

右端の下向き矢印をクリックしてアプリケーションの設定を展開すると、使用可能なスコープの一覧が表示されます。この cron ジョブは外部システム内のタイムシート項目に基づいて新しいタイムシートを作成するだけなので、必要なのは `batch:upload` スコープのみです。

`batch:upload` スコープを選択したら、**Update** ボタンをクリックして設定を保存します。

<Frame>
  <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3PjvkTaoOZKWCMJol4ajCu/b5df50d1b78f95f5a2a8f82e6bb39e42/2025-02-26_18-58-47.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=db0b66c6d8c01df1ef00ff3b8bf2c3e9" alt="Dashboard - Applications - APIs - Machine to Machine Applications - Authorize" width="898" height="1274" data-path="docs/images/cdy7uua7fh8z/3PjvkTaoOZKWCMJol4ajCu/b5df50d1b78f95f5a2a8f82e6bb39e42/2025-02-26_18-58-47.png" />
</Frame>

これでソリューションの設計と Auth0 側で必要な設定について説明できたので、次は実装に進みます。
