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

# Auth0構成（サーバーアプリ + API）

> サーバーアプリ + APIアーキテクチャシナリオのAuth0構成

このセクションでは、[Auth0 Dashboard](https://manage.auth0.com/#)を使用したExampleCoの構成について説明します。

## APIを構成する

APIを保護するには、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=auth0-dashboard" tip="Auth0 Dashboard: サービスを構成するためのAuth0の主製品。" cta="用語集の表示">Auth0 Dashboard</Tooltip>を使ってAPIを登録する必要があります。「[APIを登録する](/docs/ja-jp/get-started/auth0-overview/set-up-apis)」に記載の手順に従って、Timesheets APIを構成します。

### JSON Web Tokenプロファイル

<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-1" href="/docs/ja-jp/glossary?term=oath2" tip="OAuth 2.0: 認可プロトコルとワークフローを定義する認可フレームワーク。" cta="用語集の表示">OAuth 2.0</Tooltip>はアクセストークンのプロファイル（またはダイアレクト）を定義しています。Auth0は以下の異なる2つのプロファイルに対応しています。

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

デフォルトはAuth0プロファイルです。これら2つのプロファイルは主にクレーム名に違いがあります。Auth0プロファイルは`azp`を使用し、`client_id`は使用しません。これらの違いについては、「[アクセストークンのプロファイル](/docs/ja-jp/secure/tokens/access-tokens/access-token-profiles)」をお読みください。

### 署名アルゴリズム

APIを作成する際には、トークンの署名に使うアルゴリズムを選択する必要があります。署名は、<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-3" href="/docs/ja-jp/glossary?term=json-web-token" tip="JSON Web Token（JWT）: 二者間のクレームを安全に表現するために使用される標準IDトークン形式（および多くの場合、アクセストークン形式）。" cta="用語集の表示">JWT</Tooltip>の送信者が自称のとおりであることを検証し、メッセージが途中で変更されていないことを保証するために使用されます。

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

署名を作成するには、エンコードされたヘッダー、エンコードされたペイロード、シークレット、ヘッダーで指定されたアルゴリズムを使用して、それに署名します。APIに選択するのは、JWTヘッダーに含まれている`HS256`、`RS256`または`PS256`のアルゴリズムです。

**RS256** の使用が最も安全で推奨されます。それには以下のような理由があります。

* RS256では、秘密鍵の所有者（Auth0）のみがトークンに署名できる一方、誰でも公開鍵を使ってトークンの有効性を確認できます。
* HS256では、秘密鍵が侵害されると、新しいシークレットでAPIをデプロイし直す必要があります。RS256では、複数のオーディエンスに有効なトークンを要求できます。
* RS256では、新しいシークレットを使ってAPIをデプロイし直すことなく、鍵のローテーションを実装できます。

## スコープを構成する

APIの設定では、アプリケーションが認可中に要求可能なスコープを構成する必要があります。［Permissions（アクセス許可）］タブに移動します。

このセクションでは、以前に説明した4つのスコープ（`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/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/8592f7dc5200efa97321cd50bc28e095/Timesheets_API_-_Permissions_-_Japanese.png?fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=685642b1e4854c8b6756e908fd0d5972" alt="［Dashboard］>［API］>［アクセス許可］" data-og-width="1052" width="1052" data-og-height="891" height="891" data-path="docs/images/ja-jp/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/8592f7dc5200efa97321cd50bc28e095/Timesheets_API_-_Permissions_-_Japanese.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/8592f7dc5200efa97321cd50bc28e095/Timesheets_API_-_Permissions_-_Japanese.png?w=280&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=450582372ea2e37e5c3f79042b8d0b01 280w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/8592f7dc5200efa97321cd50bc28e095/Timesheets_API_-_Permissions_-_Japanese.png?w=560&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=859b6bd86b5bd56d711d2c996e2da1b2 560w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/8592f7dc5200efa97321cd50bc28e095/Timesheets_API_-_Permissions_-_Japanese.png?w=840&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=189e5e991f3aeaf255ffc5143740ac52 840w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/8592f7dc5200efa97321cd50bc28e095/Timesheets_API_-_Permissions_-_Japanese.png?w=1100&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=cf6e95b390791672ce9e8ac863f0931d 1100w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/8592f7dc5200efa97321cd50bc28e095/Timesheets_API_-_Permissions_-_Japanese.png?w=1650&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=f969ea59590fcf4e158ddc341c76884b 1650w, https://mintcdn.com/docs-dev-actions-triggers-prototype/qEDznvQyaSJAkqqp/docs/images/ja-jp/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/8592f7dc5200efa97321cd50bc28e095/Timesheets_API_-_Permissions_-_Japanese.png?w=2500&fit=max&auto=format&n=qEDznvQyaSJAkqqp&q=85&s=161fd2c179772f49bbde436108888672 2500w" />
</Frame>

## アプリケーションを作成する

Auth0 DashboardでAPIを作成すると、APIのテストアプリケーションが自動的に生成されます。Auth0 Dashboardで[［Application（アプリケーション）］](https://manage.auth0.com/#/applications)セクションに移動すると、Timesheets APIのテストアプリケーションがあります。

<Frame>
  <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/t3dULpCfFcvDg3-K/docs/images/ja-jp/cdy7uua7fh8z/7lnuzFgs3IuWyL4bK5aVZV/285ae360c3804a3d7d30c2f61d0bb527/Timesheets_API_-_M2M_Apps.png?fit=max&auto=format&n=t3dULpCfFcvDg3-K&q=85&s=0535a870c1d13c41941aa01f22d7466d" alt="undefined" width="1127" height="659" data-path="docs/images/ja-jp/cdy7uua7fh8z/7lnuzFgs3IuWyL4bK5aVZV/285ae360c3804a3d7d30c2f61d0bb527/Timesheets_API_-_M2M_Apps.png" />
</Frame>

一番下のメニューオプションを選択して、アプリケーションの設定に移動します。アプリケーションの名前を「`Timesheets Import Job`」に変更します。

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

## アプリケーションのAPIアクセスを構成する

最後に、アプリケーションにTimesheets APIへのアクセスを許可する必要があります。APIの構成に戻って、［Machine to Machine Application（M2Mアプリケーション）］タブを選択します。

リスト内の**Timesheets Import Job** アプリケーションにAPIへのアクセスが有効になっていることを確認します。有効な場合には、アプリケーション名の右にあるスイッチの値が［`Authorized`（許可）］になります。アプリケーションが認可されていない場合には、スイッチの値を［`Unauthorized`（不許可）］から［`Authorized`（許可）］に切り替えます。

また、Auth0での認可についてアプリケーションに発行されるアクセストークンに、どのようなスコープが含まれるのかを指定する必要があります。

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

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

<Frame>
  <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/CVqyjpVc9VVKbCsn/docs/images/ja-jp/cdy7uua7fh8z/3PjvkTaoOZKWCMJol4ajCu/594802a395711ea17ebe4465592c3217/Timesheets_API_-_Permissions.png?fit=max&auto=format&n=CVqyjpVc9VVKbCsn&q=85&s=8a43f2f6261e0edeae4cf74dc87a94f1" alt="Dashboard - アプリケーション - API - マシンツーマシンアプリケーション - 認可" width="898" height="1274" data-path="docs/images/ja-jp/cdy7uua7fh8z/3PjvkTaoOZKWCMJol4ajCu/594802a395711ea17ebe4465592c3217/Timesheets_API_-_Permissions.png" />
</Frame>

これで、ソリューションの設計とAuth0に必要な構成は完了です。次に、実装を始めることができます。
