メインコンテンツへスキップ
このシュートリアルのセクションでは、APIとそれに関連するマシンツーマシンアプリケーションについて掘り下げてみたいと思います。最初から始めたい方は、「APIを使用したサーバーアプリケーション」をお読みください。
分かりやすくするために、実装では認証と認可に焦点をあてています。サンプルからも分かるとおり、入力のタイムシートエントリーはハードコードされるため、APIはタイムシートエントリーを保持しません。代わりに、情報の一部をエコーバックします。

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

APIエンドポイントは リソース(データの集合)を表す静的URIです。 たとえば、レストランAPIには/orders/customersなどのエンドポイントがあるかもしれません。このAPIに接続するアプリケーションは、関連するHTTPメソッド(POSTGETPUTPATCHDELETE)を使ってAPIエンドポイントを呼び出すことにより、CRUD操作(作成、読み取り、更新、削除)を実行することができます。 ExampleCoのTimesheets APIでは、エンドポイントを構成してタイムシートエントリを作成する必要があります。
HTTPメソッドAPIエンドポイント説明
POST/timesheets/upload新しいタイムシートエントリを作成する
{
  'user_id': '007',
  'date': '2017-05-10T17:40:20.095Z',
  'project': 'StoreZero',
  'hours': 5
}
APIは要求を正しく処理すると、HTTP 201 Createdステータスコードともに、JSONオブジェクトを含んだボディーを返します。このJSONオブジェクトには、新規作成されたタイムシートを記述するメッセージプロパティが含まれています。
{
"message": "Created timesheet 14 for employee 007."
}
Node.jsでの実装を参照してください。

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

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

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

アプリケーションのサンプル実装を使うことなくアクセストークンを取得するには、以下のペイロードでAuth0 Authentication APIのトークン取得エンドポイントを呼び出します。 codeblockOld.header.login.logInButton codeblockOld.header.login.configureSnippet
{
  audience: "{yourApiIdentifier}",
  grant_type: "client_credentials",
  client_id: "${account.client_id}",
  client_secret: "${account.client_secret}"
}

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

アクセストークンでAPIのエンドポイントはセキュリティ保護されましたが、APIを呼び出すプロセスに新しいタイムシートのエントリをPOSTする権限があるかは未確認のままです。 前述のように、それぞれのアクセストークンには、アプリケーションに付与されたアクセス権限のリストが含まれます。これらの権限は、scope要求パラメーターを使って定義されます。これを構成する方法については、「スコープを構成する」記述のある段落をお読みください。 エンドポイントには、batch:uploadスコープが必要です。 Node.js での実装を参照してください。

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

このセクションでは、シナリオでマシンツーマシンアプリケーションを実装する方法について説明します。

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

まず、Auth0の/oauth/token APIエンドポイントを呼び出して、アクセストークンを取得します。 このためには、アプリケーションの設定にある以下の構成値が必要です。
  • Domain(ドメイン) :Auth0ドメイン(テナント識別子でもある)です。この値は、APIのURL「https://{yourTenant}/oauth/token」の一部になります。
  • (オーディエンス) :API識別子です。
  • (クライアントID) :Auth0アプリケーションのクライアントIDです。
  • (クライアントシークレット) :Auth0アプリケーションのクライアントシークレットです。
実装では、以下ような形式のペイロードを使って、POST操作をhttps://{yourDomain}/oauth/tokenエンドポイントに対して行います。
{
  "audience": "{yourApiIdentifier}",
  "grant_type": "client_credentials",
  "client_id": "${account.client_id}",
  "client_secret": "${account.client_secret}"
}
詳細については、「クライアントの資格情報フローを使用してAPIを呼び出す」を参照してください。 Python の実装を参照してください。

APIを呼び出す

有効なスコープのあるアクセストークンを取得したら、APIを呼び出すことができます。 そのためには、以下を行います。
  • コードに埋め込まれたタイムシートエントリをJSON形式で構築する
  • アクセストークンをAuthorizationヘッダーとして要求に追加する
  • HTTP POST要求を行う
  • 応答を解析し、ターミナルに出力する(任意)
Python の実装を参照してください。
I