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

# APIを使ったサーバーアプリケーション

> アプリケーションの代わりに、APIを安全に呼び出す（リソースサーバー）サーバー間通信を使用したアーキテクチャシナリオについて説明します。

この例ではExampleCoという架空の会社のためにタイムシートAPIを作成します。このAPIにより、従業員・請負業者のタイムシートエントリーが追加できるようになります。

また、このAPIを使って、社外システムからのタイムシートエントリーを処理してそれを一元化されたタイムシートデータベースに送るcronジョブもビルドします。

<Info>
  ### TL;DR

  * Auth0は、APIエンドポイントへのアクセスを保護する手段として、API認証および認可を提供しています（[「API認証と認可」](/docs/ja-jp/get-started/architecture-scenarios/server-application-api/part-1#api-authentication-and-authorization)を参照）
  * マシンツーマシンアプリケーションを認可する場合（ユーザー操作を必要としないCLI、サービス、またはdaemon）、Auth0はクライアント資格情報付与をサポートしています（[「クライアント資格情報付与」](/docs/ja-jp/get-started/architecture-scenarios/server-application-api/part-1#client-credentials-grant)を参照）
  * マシンツーマシンアプリケーションとAPIの両方をAuth0 Dashboardで構成する必要があります（[「Auth0の構成」](/docs/ja-jp/get-started/architecture-scenarios/server-application-api/part-2)を参照）
  * APIは、APIへの呼び出し時にHTTP認可ヘッダーに有効なアクセストークン（JSON Webトークンとして実装）が渡されることを確実にすることで保護されます（[「APIを実装する」](/docs/ja-jp/architecture-scenarios/server-api/part-3)を参照）
  * 認可が成功すると、マシンツーマシンアプリケーションにアクセストークンが発行されます（[「アクセストークンを取得する」](/docs/ja-jp/architecture-scenarios/server-api/part-3#get-an-access-token)を参照）
  * マシンツーマシンアプリケーションは、このアクセストークンを使ってHTTP認可ヘッダーとして渡し、APIエンドポイントへの呼び出しを認証します（[「APIを呼び出す」](/docs/ja-jp/architecture-scenarios/server-api/part-3#invoke-the-api)を参照）
</Info>

## 前提条件

ExampleCoは、コンサルティングを行うスタートアップ企業です。現在従業員は約100名で、業務を社外の請負業者に外注もしています。従業員と請負業者は全員、毎週タイムシートに入力する必要があります。そこで同社は、[通常のWebアプリ向けシングルサインオン](/docs/ja-jp/get-started/architecture-scenarios/sso-for-regular-web-apps)で紹介しているシナリオに従って、タイムシートのアプリケーションを構築しました。社内の従業員は、このWebアプリを使用してタイムシートに入力しますが、一部の社外請負業者は、タイムシートを追跡する別のツールをすでに使用しています。ExampleCoは、重複作業を避けるためのソリューションが必要であり、そこでAPIを使用して、社外システムからタイムシートエントリーを読み取り、それをExampleCoのバックエンドに自動的にアップロードするcronジョブを構築することに決めました。

### 目標と要件

ExampleCoは、以下のことが可能なフレキシブルなソリューションを構築したいと考えています。

* バックエンドで操作する自動化されたプロセス
* モバイルアプリケーションなど、アーキテクチャ内の将来的なアプリケーションのローンチ
* 認可済みユーザーおよびアプリケーションが安全にアクセスできるタイムシートAPI
* アプリケーションの大部分のコードおよびビジネスロジックとの他のアプリとの共有

## もっと詳しく

* [ソリューションの概要（サーバーアプリ + API）](/docs/ja-jp/get-started/architecture-scenarios/server-application-api/part-1)
* [Auth0構成（サーバーアプリ + API）](/docs/ja-jp/get-started/architecture-scenarios/server-application-api/part-2)
* [アプリケーションの実装（サーバーアプリ + API）](/docs/ja-jp/get-started/architecture-scenarios/server-application-api/part-3)
* [まとめ（サーバーアプリ＋API）](/docs/ja-jp/get-started/architecture-scenarios/server-application-api/part-4)
