分かりやすくするために、実装では認証と認可に焦点をあてています。サンプルからも分かるとおり、入力のタイムシートエントリーはハードコードされるため、APIはタイムシートエントリーを保持しません。代わりに、情報の一部をエコーバックします。
APIエンドポイントを定義する
APIエンドポイントは リソース(データの集合)を表す静的URIです。 たとえば、レストランAPIには/orders
や/customers
などのエンドポイントがあるかもしれません。このAPIに接続するアプリケーションは、関連するHTTPメソッド(POST
、GET
、PUT
、PATCH
、DELETE
)を使ってAPIエンドポイントを呼び出すことにより、CRUD操作(作成、読み取り、更新、削除)を実行することができます。
ExampleCoのTimesheets APIでは、エンドポイントを構成してタイムシートエントリを作成する必要があります。
HTTPメソッド | APIエンドポイント | 説明 |
---|---|---|
POST | /timesheets/upload | 新しいタイムシートエントリを作成する |
HTTP 201 Created
ステータスコードともに、JSONオブジェクトを含んだボディーを返します。このJSONオブジェクトには、新規作成されたタイムシートを記述するメッセージプロパティが含まれています。
Node.jsでの実装を参照してください。
APIエンドポイントを保護する
APIエンドポイントを保護するには、APIアプリケーション内でミドルウェア関数を実装し、トークンを処理する必要があります。この関数は、トークンがAPI要求に含まれているかを確認し、トークンを検証してから、要求されたアクションの実行に必要なスコープの有無を確認します。 すべての条件が満たされると、APIアプリケーションは前に述べたメッセージで応答します。提供されたアクセストークンに問題がある(またはまったく提供されていない)場合は、APIアプリケーションがHTTP 401 Unauthorized
ステータスコードを送信します。
Node.js での実装を参照してください。
アクセストークン取得する
アプリケーションのサンプル実装を使うことなくアクセストークンを取得するには、以下のペイロードでAuth0 Authentication APIのトークン取得エンドポイントを呼び出します。 codeblockOld.header.login.logInButton codeblockOld.header.login.configureSnippetアプリケーションの権限を確認する
アクセストークンで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
エンドポイントに対して行います。
APIを呼び出す
有効なスコープのあるアクセストークンを取得したら、APIを呼び出すことができます。 そのためには、以下を行います。- コードに埋め込まれたタイムシートエントリをJSON形式で構築する
- アクセストークンを
Authorization
ヘッダーとして要求に追加する - HTTP
POST
要求を行う - 応答を解析し、ターミナルに出力する(任意)