JSON ウェブトークン(JWT)は、クライアントとサーバー間の情報交換の認証と認可に使用されるオープン ウェブ標準です。アプリユーザーが適切なロールの認証情報で初めてログインすると、サーバーは後続のリクエストで使用する、エンコードされたデジタル署名付きの JWT を作成して返します。このプロセスでは、ユーザーの認証と、アカウントのロールに基づくルート、サービス、リソースへのアクセス権の付与の両方が行われます。
Fleet Engine では、スマートフォンやブラウザなどの信頼度の低い環境 からの API メソッド呼び出しに JSON ウェブトークン (JWT)を使用する必要があります。
JWT はサーバーで生成され、署名、暗号化されてクライアントに渡されます。有効期限が切れるか無効になるまで、後続のサーバーとのやり取りに使用されます。
重要な詳細
- アプリケーションのデフォルト認証情報を使用して、Fleet Engine に対して認証と 認可を行います。
- 適切なサービス アカウントを使用して JWT に署名します。Fleet Engine の基本 の Fleet Engine サービス アカウントのロールをご覧ください。
API キーとは異なり、JWT の有効期間は短く、ロールに実行が許可されているオペレーションのみに制限されます。JWT の詳細については、 Wikipedia の JSON ウェブトークンをご覧ください。アクセスロールの詳細については、このガイドの サービス アカウントのロールをご覧ください。
JWT の要素
JWT には、ヘッダーとクレームのセクションが含まれています。ヘッダー セクションには、サービス アカウントから取得した秘密鍵や暗号化アルゴリズムなどの情報が含まれます。クレーム セクションには、JWT の作成時刻、有効期間(TTL)、JWT がアクセスを要求するサービス、アクセス範囲を指定するその他の認可情報(配送車両 ID など)が含まれます。
次の表に、一般的な JWT フィールドの詳細と、Fleet Engine クラウド プロジェクトでこれらのフィールドの値を確認できる場所に関する具体的な情報を示します。
フィールド |
説明 |
|---|---|
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": ["*"] |
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 を含める必要があります。delivervehicleid、trackingid、taskidのクレームは含めないでください。 -
trackingid`
GetTaskTrackingInfoAPI` を呼び出すときに使用します。クレームはリクエストのトラッキング ID と一致する必要があります。delivervehicleid、taskid、またはtaskidsのクレームは含めないでください。
次のステップ
- Fleet Engine のセキュリティ設計について読んで、完全な認証フローを理解する。
- サーバーから JSON ウェブトークンを発行する 方法を学習する。