簡単にするため、この実装では認証と認可のみに絞っています。サンプルで示すように、入力する タイムシート エントリ はハードコードされており、API でもその タイムシート エントリ は永続化されません。代わりに、情報の一部をそのまま返すだけです。
API エンドポイントを定義する
API エンドポイント は、リソース (データの集合) を表す静的な URI です。 たとえば、レストラン向けの API には/orders や /customers といったエンドポイントがあるかもしれません。この API に接続するアプリケーションは、対応する HTTP メソッド (POST、GET、PUT、PATCH、または DELETE) で API エンドポイントを呼び出すことで、CRUD (作成、読み取り、更新、削除) 操作を実行できます。
ExampleCo の Timesheets API では、タイムシートのエントリを作成するためのエンドポイントを設定する必要があります。
HTTP 201 Created ステータスコードのレスポンスが返され、本文には新しく作成されたタイムシートを説明する message プロパティを持つ JSON オブジェクトが含まれます。
Node.js での実装を参照してください。
APIエンドポイントを保護する
APIエンドポイントを保護するには、トークンを処理するミドルウェア関数をAPIアプリケーションに実装する必要があります。この関数は、APIリクエストにトークンが含まれているかを確認し、トークンを検証したうえで、要求された操作の実行に必要なスコープが含まれているかを確認します。 すべての条件が満たされると、APIアプリケーションは前述のメッセージを返します。指定されたに何らかの問題がある場合 (またはまったく指定されていない場合) 、APIアプリケーションはHTTP 401 Unauthorizedステータスコードのレスポンスを返します。
実装例は Node.jsをご覧ください。
アクセストークンを取得する
アプリケーションサンプルの実装を使用せずにアクセストークンを取得するには、以下のペイロードを指定して Auth0 Authentication API の Get Token エンドポイントを呼び出します。アプリケーションの権限を確認する
これで、アクセストークン を使用して API の エンドポイント は保護されましたが、API を呼び出すプロセスに新しい タイムシート エントリ を投稿する権限があることまでは、まだ確認できていません。 前述のとおり、各 アクセストークン には、アプリケーションに付与された permissions の一覧を含めることができます。これらの permissions は、scope リクエストパラメータで定義します。設定方法については、Configure the Scopes の段落を参照してください。
この エンドポイント では、scope batch:upload を必須とします。
実装については Node.js を参照してください。
Machine-to-Machine Application を実装する
このセクションでは、このシナリオ向けに Machine-to-Machine Application を実装する方法を見ていきます。アクセストークンを取得する
まず、Auth0/oauth/token APIエンドポイントを呼び出して、アクセストークンを取得します。
そのためには、アプリケーション設定で確認できる以下の設定値が必要です。
- Domain: Auth0 Domain であり、テナント識別子でもあります。この値は API URL の一部となります:
https://{yourTenant}/oauth/token。 - : API 識別子。
- : Auth0 アプリケーションの Client ID。
- : Auth0 アプリケーションの Client Secret。
https://{yourDomain}/oauth/token エンドポイントに対して POST リクエストを実行する必要があります。
APIを呼び出す
有効なスコープを含むアクセストークンを取得できたので、APIを呼び出せます。 そのために、次の手順を行います。- JSON形式で、ハードコードされたタイムシート エントリを作成します。
- リクエストの
Authorizationヘッダーにアクセストークンを追加します。 - HTTP
POSTリクエストを送信します。 - レスポンスを解析し、ターミナルに出力します (任意) 。