アプリケーションの実装(サーバーアプリ + API)
このシュートリアルのセクションでは、APIとそれに関連するマシンツーマシンアプリケーションについて掘り下げてみたいと思います。最初から始めたい方は、「APIを使用したサーバーアプリケーション」をお読みください。
APIエンドポイントを定義する
APIエンドポイントはリソース(データの集合)を表す静的URIです。
たとえば、レストランAPIには/orders
や/customers
などのエンドポイントがあるかもしれません。このAPIに接続するアプリケーションは、関連するHTTPメソッド(POST
、GET
、PUT
、PATCH
、DELETE
)を使ってAPIエンドポイントを呼び出すことにより、CRUD操作(作成、読み取り、更新、削除)を実行することができます。
ExampleCoのTimesheets APIでは、エンドポイントを構成してタイムシートエントリを作成する必要があります。
HTTPメソッド | APIエンドポイント | 説明 |
---|---|---|
POST |
/timesheets/upload |
新しいタイムシートエントリを作成する |
{
'user_id': '007',
'date': '2017-05-10T17:40:20.095Z',
'project': 'StoreZero',
'hours': 5
}
Was this helpful?
APIは要求を正しく処理すると、HTTP 201 Created
ステータスコードともに、JSONオブジェクトを含んだボディーを返します。このJSONオブジェクトには、新規作成されたタイムシートを記述するメッセージプロパティが含まれています。
{
"message": "Created timesheet 14 for employee 007."
}
Was this helpful?
APIエンドポイントを保護する
APIエンドポイントを保護するには、APIアプリケーション内でミドルウェア関数を実装し、トークンを処理する必要があります。この関数は、トークンがAPI要求に含まれているかを確認し、トークンを検証してから、要求されたアクションの実行に必要なスコープの有無を確認します。
すべての条件が満たされると、APIアプリケーションは前に述べたメッセージで応答します。提供されたアクセストークンに問題がある(またはまったく提供されていない)場合は、APIアプリケーションがHTTP 401 Unauthorized
ステータスコードを送信します。
Node.jsでの実装を参照してください。
アクセストークン取得する
アプリケーションのサンプル実装を使うことなくアクセストークンを取得するには、以下のペイロードでAuth0 Authentication APIのトークン取得エンドポイントを呼び出します。
{
audience: "{yourApiIdentifier}",
grant_type: "client_credentials",
client_id: "${account.client_id}",
client_secret: "${account.client_secret}"
}
Was this helpful?
アプリケーションの権限を確認する
アクセストークンでAPIのエンドポイントはセキュリティ保護されましたが、APIを呼び出すプロセスに新しいタイムシートのエントリをPOSTする権限があるかは未確認のままです。
前述のように、それぞれのアクセストークンには、アプリケーションに付与されたアクセス権限のリストが含まれます。これらの権限は、scope
要求パラメーターを使って定義されます。これを構成する方法については、「スコープを構成する」記述のある段落をお読みください。
エンドポイントには、batch:upload
スコープが必要です。
Node.jsでの実装を参照してください。
マシンツーマシンアプリケーションを実装する
このセクションでは、シナリオでマシンツーマシンアプリケーションを実装する方法について説明します。
アクセストークン取得する
まず、Auth0の/oauth/token
APIエンドポイントを呼び出して、アクセストークンを取得します。
このためには、アプリケーションの設定にある以下の構成値が必要です。
Domain(ドメイン):Auth0ドメイン(テナント識別子でもある)です。この値は、APIのURL「
https://{yourTenant}/oauth/token
」の一部になります。Audience(オーディエンス):API識別子です。
Client ID(クライアントID):Auth0アプリケーションのクライアントIDです。
Client Secret(クライアントシークレット):Auth0アプリケーションのクライアントシークレットです。
実装では、以下ような形式のペイロードを使って、POST
操作をhttps://{yourDomain}/oauth/token
エンドポイントに対して行います。
{
"audience": "{yourApiIdentifier}",
"grant_type": "client_credentials",
"client_id": "${account.client_id}",
"client_secret": "${account.client_secret}"
}
Was this helpful?
詳細については、「クライアントの資格情報フローを使用してAPIを呼び出す」を参照してください。
Pythonの実装を参照してください。
APIを呼び出す
有効なスコープのあるアクセストークンを取得したら、APIを呼び出すことができます。
そのためには、以下を行います。
コードに埋め込まれたタイムシートエントリをJSON形式で構築する
アクセストークンを
Authorization
ヘッダーとして要求に追加するHTTP
POST
要求を行う応答を解析し、ターミナルに出力する(任意)
Pythonの実装を参照してください。