JSON ウェブトークン(JWT)は、クライアントとサーバー間の情報交換の認証と認可に使用されるオープン ウェブ標準です。アプリユーザーが適切なロール認証情報で初めてログインすると、サーバーは後続のリクエストで使用するエンコードされたデジタル署名付き JWT を作成して返します。このプロセスでは、ユーザーの認証と、アカウントのロールに基づくルート、サービス、リソースへのアクセス権の付与の両方が行われます。
Fleet Engine では、スマートフォンやブラウザなどの信頼度の低い環境からの API メソッド呼び出しに JSON Web Token(JWT)を使用する必要があります。
JWT はサーバーで生成され、署名と暗号化が行われてクライアントに渡されます。有効期限が切れるか無効になるまで、以降のサーバーとのやり取りで使用されます。
主な詳細
- アプリケーションのデフォルト認証情報を使用して、Fleet Engine に対して認証と認可を行います。
- 適切なサービス アカウントを使用して JWT に署名します。Fleet Engine の基本の Fleet Engine サービス アカウントのロールをご覧ください。
API キーとは異なり、JWT は有効期間が短く、ロールに実行権限が付与されているオペレーションのみに制限されます。JWT の詳細については、Wikipedia の JSON Web Token をご覧ください。アクセスロールの詳細については、このガイドのサービス アカウントのロールをご覧ください。
JWT 要素
JWT には、ヘッダーとクレーム セクションが含まれます。ヘッダー セクションには、サービス アカウントから取得した秘密鍵や暗号化アルゴリズムなどの情報が含まれています。クレーム セクションには、JWT の作成時間、有効期間、JWT がアクセスを要求するサービス、アクセスをスコープするその他の認可情報(配達車両 ID など)などの情報が含まれています。
次の表に、JWT フィールドの一般的な説明と、Fleet Engine Cloud プロジェクトでこれらのフィールドの値を見つけることができる場所に関する具体的な情報を示します。
フィールド |
説明 |
|---|---|
alg |
使用するアルゴリズム。`RS256`。 |
typ |
トークンの種類。`JWT`。 |
子供 |
サービス アカウントの秘密鍵 ID。この値は、サービス アカウントの JSON ファイルの |
フィールド |
説明 |
|---|---|
iss |
サービス アカウントのメールアドレス。サービス アカウントの JSON ファイルの |
Pub/Subです |
サービス アカウントのメールアドレス。サービス アカウントの JSON ファイルの |
AUD |
サービス アカウントの |
iat |
JWT が作成されたときのタイムスタンプ。00:00:00 |
exp |
JWT の有効期限が切れるタイムスタンプ。 |
authorization |
使用ケースに応じて、 taskids を指定する場合、認可スコープは次のいずれかの形式の配列にする必要があります。 "taskids": ["task_id_one","task_id_two"]
または "taskids": ["*"] |
フリートエンジン JWT クレーム
Fleet Engine はプライベート クレームを使用します。プライベートクレームを使用すると、承認されたクライアントのみが自分のデータにアクセスできるようになります。
たとえば、サーバーがドライバーのモバイル デバイスに対して JSON Web Token を発行する場合、そのトークンには、そのドライバーの車両 ID の値を持つ vehicleid クレームまたは deliveryvehicleid クレームのいずれかが含まれている必要があります。次に、ドライバーの役割に応じて、JWT は特定の車両 ID のみへのアクセスを有効にし、他の任意の車両 ID へのアクセスは許可しません。
Fleet Engine は次のプライベート クレームを使用します。
オンデマンドの乗車
-
vehicleid:- Driver SDK は、乗車中か車両のどちらで動作しているかにかかわらず、常にこのクレームを使用します。Fleet Engine バックエンドは、変更を行う前に、車両がリクエストされた乗車に関連付けられていることを確認します。
- JWT は、必須でなくても、車両と乗車両方のオペレーションをカバーできます。これにより、JWT 署名の実装が簡素化される可能性があります。
-
tripid:- Consumer SDK は常にこのクレームを使用します。
- JWT は、必須ではない場合でも、車両と乗車操作の両方をカバーできます。これにより、トークン署名の実装が簡素化される可能性があります。
スケジュール設定されたタスク
-
deliveryvehicleid配送車両ごとの API を呼び出すときに使用します。
-
taskidタスクごとの API を呼び出すときに使用します。
-
taskidsBatchCreateTasksAPIを呼び出すときに使用します。この要求は配列形式である必要があり、配列には要求を完了するために必要なすべてのタスク ID が含まれている必要があります。delivervehicleid、trackingid、taskidの各クレームは含めないでください。 -
trackingidGetTaskTrackingInfoAPIを呼び出すときに使用します。申し立ては、リクエストのトラッキング ID と一致する必要があります。delivervehicleid、taskid、taskidsの各クレームは含めないでください。
次のステップ
- 完全な認証フローについては、Fleet Engine のセキュリティ設計をご覧ください。
- サーバーから JSON Web Token を発行する方法を学習する。