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 プロジェクトでこれらのフィールドの値を確認できる場所の詳細を示します。
フィールド |
説明 |
---|---|
alg |
使用するアルゴリズム。「RS256」。 |
typ |
トークンの種類。JWT。 |
子供 |
サービス アカウントの秘密鍵 ID。この値は、サービス アカウント JSON ファイルの |
フィールド |
説明 |
---|---|
iss |
サービス アカウントのメールアドレス。サービス アカウントの JSON ファイルの |
Pub/Subです |
サービス アカウントのメールアドレス。サービス アカウントの JSON ファイルの |
AUD |
サービス アカウントの |
iat |
JWT が作成されたときのタイムスタンプ。00:00:00 |
exp |
JWT の有効期限が切れるタイムスタンプ。 |
authorization |
ユースケースに応じて、 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 が配列に含まれている必要があります。delivervehicleid
、trackingid
、taskid
の各クレームは含めないでください。 -
trackingid
GetTaskTrackingInfoAPI
を呼び出すときに使用します。申し立ては、リクエスト内のトラッキング ID と一致している必要があります。delivervehicleid
、taskid
、taskids
の各クレームは含めないでください。
次のステップ
- 完全な認証フローを理解するには、Fleet Engine のセキュリティ設計をご覧ください。
- サーバーから JSON Web Token を発行する方法を学習する。