JSON ウェブトークン

JSON Web Token(JWT)は、クライアントとサーバー間の情報交換の認証と承認に使用されるオープン ウェブ標準です。アプリユーザーが適切なロールの認証情報で初めてログインすると、サーバーはエンコードされたデジタル署名付き JWT を作成して返します。この JWT は、後続のリクエストで使用されます。このプロセスでは、ユーザーの認証と、アカウントのロールに基づくルート、サービス、リソースへのアクセス許可の両方が行われます。

信頼性の低い環境からの API メソッド呼び出しの場合、Fleet Engine では、適切なサービス アカウントによって署名された JSON Web Token(JWT)を使用する必要があります。信頼性の低い環境には、スマートフォンやブラウザが含まれます。JWT は、完全に信頼できる環境であるサーバー上で生成されます。JWT は署名され、暗号化されて、有効期限が切れるか無効になるまで、その後のサーバー インタラクションのためにクライアントに渡されます。

バックエンドは、標準のアプリケーションのデフォルト認証情報メカニズムを使用して、Fleet Engine に対して認証と承認を行う必要があります。適切なサービス アカウントで署名された JWT を使用してください。サービス アカウントのロールの一覧については、Fleet Engine の基本Fleet Engine サービス アカウントのロールをご覧ください。

一方、バックエンドは、標準のアプリケーションのデフォルト認証情報メカニズムを使用して、Fleet Engine に対して認証と承認を行う必要があります。

API キーとは異なり、JWT は有効期間が短く、ロールが実行を承認されているオペレーションのみに制限されます。JWT の詳細については、Wikipedia の JSON Web Token をご覧ください。アクセスロールの詳細については、このガイドのサービス アカウントのロールをご覧ください。

JWT 要素

JWT には、ヘッダーとクレーム セクションが含まれています。ヘッダー セクションには、サービス アカウントから取得した秘密鍵や暗号化アルゴリズムなどの情報が含まれます。クレーム セクションには、JWT の作成日時、存続期間、JWT がアクセスを要求するサービス、アクセス範囲のその他の認可情報(配送車両 ID など)が含まれます。

次の表に、一般的な JWT フィールドの説明と、Fleet Engine Cloud プロジェクトでこれらのフィールドの値を確認できる場所の詳細を示します。

JWT ヘッダー フィールド

フィールド

説明

alg

使用するアルゴリズム。「RS256」。

typ

トークンの種類。JWT。

子供

サービス アカウントの秘密鍵 ID。この値は、サービス アカウント JSON ファイルの private_key_id フィールドで確認できます。適切なレベルの権限を持つサービス アカウントのキーを使用してください。

JWT クレーム フィールド

フィールド

説明

iss

サービス アカウントのメールアドレス。サービス アカウントの JSON ファイルの client_email フィールドにあります。

Pub/Subです

サービス アカウントのメールアドレス。サービス アカウントの JSON ファイルの client_email フィールドにあります。

AUD

サービス アカウントの SERVICE_NAME(この場合は https://fleetengine.googleapis.com/

iat

JWT が作成されたときのタイムスタンプ。00:00:00 UTC, January 1, 1970 からの経過秒数で指定します。スキューには 10 分ほどかかります。タイムスタンプが過去または未来の方向に過剰に遠い時点のものである場合は、サーバーがエラーを報告する可能性があります。

exp

JWT の有効期限が切れるタイムスタンプ。00:00:00 UTC, January 1, 1970 からの経過秒数で指定します。タイムスタンプが 1 時間以上先の場合、リクエストは失敗します。

authorization

ユースケースに応じて、deliveryvehicleidtrackingidtaskid、または taskids を含めることができます。

taskid を指定する場合は、認可スコープは次のいずれかの形式の配列にする必要があります。

"taskids": ["task_id_one","task_id_two"]

または

"taskids": ["*"]

Fleet Engine 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 を呼び出すときに使用します。

  • taskids

    BatchCreateTasksAPI を呼び出すときに使用します。このクレームは配列形式で、リクエストの完了に必要なすべてのタスク ID が配列に含まれている必要があります。delivervehicleidtrackingidtaskid の各クレームは含めないでください。

  • trackingid

    GetTaskTrackingInfoAPI を呼び出すときに使用します。申し立ては、リクエスト内のトラッキング ID と一致している必要があります。delivervehicleidtaskidtaskids の各クレームは含めないでください。

次のステップ