JSON ウェブトークン

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

Fleet Engine では、スマートフォンやブラウザなどの信頼度の低い環境 からの API メソッド呼び出しに JSON ウェブトークン (JWT)を使用する必要があります。

JWT はサーバーで生成され、署名、暗号化されてクライアントに渡されます。有効期限が切れるか無効になるまで、後続のサーバーとのやり取りに使用されます。

重要な詳細

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

JWT の要素

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

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

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 を含めることができます。

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

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

または

"taskids": ["*"]

Fleet Engine JWT クレーム

Fleet Engine はプライベート クレームを使用します。プライベート クレームを使用すると、認可されたクライアントのみが独自のデータにアクセスできるようになります。

たとえば、サーバーがドライバーのモバイル デバイスに JSON ウェブトークンを発行する場合、そのドライバーの車両 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 と一致する必要があります。delivervehicleidtaskid、または taskids のクレームは含めないでください。

次のステップ