メインコンテンツへスキップ
このチュートリアルのこのセクションでは、API と、それに関連するマシン間アプリケーションを詳しく見ていきます。最初から確認するには、Server Applications with API を参照してください。
簡略化のため、この実装では認証と認可のみに焦点を当てます。サンプルで示すように、入力するタイムシートエントリはハードコードされており、API ではそのタイムシートエントリを永続化しません。代わりに、受け取った情報の一部をそのまま返すだけです。

API エンドポイントを定義する

API エンドポイントとは、リソース (データの集合) を表す固定の URI です。 たとえば、レストランの API には /orders/customers といったエンドポイントがある場合があります。この API に接続するアプリケーションは、対応する HTTP メソッド (POSTGETPUTPATCH、または DELETE) を使って API エンドポイントを呼び出すことで、CRUD (作成、読み取り、更新、削除) 操作を実行できます。 ExampleCo のタイムシート API では、タイムシートエントリを作成するためのエンドポイントを設定する必要があります。
HTTP methodAPI endpointDescription
POST/timesheets/upload新しいタイムシートエントリを作成します
{
  'user_id': '007',
  'date': '2017-05-10T17:40:20.095Z',
  'project': 'StoreZero',
  'hours': 5
}
API がリクエストを正常に処理すると、HTTP 201 Created ステータスコードのレスポンスが返され、その本文には新しく作成されたタイムシートを説明する message プロパティを含む JSON オブジェクトが含まれます。
{
"message": "Created timesheet 14 for employee 007."
}
Node.js の実装を参照してください。

API エンドポイントを保護する

API エンドポイントを保護するには、トークンを処理するミドルウェア関数を API アプリケーションに実装する必要があります。この関数は、API リクエストにトークンが含まれているかどうかを確認し、トークンを検証したうえで、要求されたアクションの実行に必要なスコープが含まれていることを確認します。 これらの条件がすべて満たされると、API アプリケーションは前述のメッセージを返します。指定された に何らかの問題がある場合 (またはまったく指定されていない場合) 、API アプリケーションは HTTP 401 Unauthorized ステータスコードを含むレスポンスを返します。 実装については Node.jsを参照してください。

アクセストークンを取得する

アプリケーションのサンプル実装を使用せずにアクセストークンを取得するには、次のペイロードを指定して Auth0 Authentication API の Get Token エンドポイントを呼び出してください。
{
  audience: "{yourApiIdentifier}",
  grant_type: "client_credentials",
  client_id: "${account.client_id}",
  client_secret: "${account.client_secret}"
}

アプリケーションの権限を確認する

これで、アクセストークンを使用して API のエンドポイントは保護されましたが、API を呼び出すプロセスに新しいタイムシートエントリを投稿する権限があることは、まだ確認できていません。 前述のとおり、各アクセストークンには、アプリケーションに付与された権限の一覧が含まれる場合があります。これらの権限は、scope リクエストパラメータを使用して定義されます。この設定方法については、Scopes を設定する のセクションを参照してください。 このエンドポイントでは、スコープ batch:upload を必須とします。 実装については Node.js を参照してください。

マシン間アプリケーションを実装する

このセクションでは、このシナリオ向けのマシン間アプリケーションを実装する方法を説明します。

アクセストークンを取得する

まず、アクセストークンを取得するために、Auth0 の /oauth/token API エンドポイントを呼び出します。 そのためには、アプリケーション設定 で確認できる次の設定値が必要です。
  • ドメイン: Auth0 のドメインであり、テナントの識別子でもあります。この値は API URL の一部になります: https://{yourTenant}/oauth/token.
  • : API 識別子。
  • : Auth0 アプリケーションのクライアントID。
  • : Auth0 アプリケーションのクライアントシークレット。
実装では、次の形式のペイロードを指定して、https://{yourDomain}/oauth/token エンドポイントに POST リクエストを送信する必要があります。
{
  "audience": "{yourApiIdentifier}",
  "grant_type": "client_credentials",
  "client_id": "${account.client_id}",
  "client_secret": "${account.client_secret}"
}
詳しくは、Client Credentials フローを使用して API を呼び出すを参照してください。 実装例は Python を参照してください。

API を呼び出す

有効なスコープを含むアクセストークンを取得したので、API を呼び出せます。 そのために、次を行います。
  • JSON 形式で、ハードコードしたタイムシートエントリを作成します。
  • リクエストの Authorization ヘッダーにアクセストークンを追加します。
  • HTTP POST リクエストを送信します。
  • レスポンスを解析し、ターミナルに出力します (任意) 。
実装例は Python を参照してください。