JavaScript フリート トラッキング ライブラリを使用する前に、 Fleet Engine の設定が完了している必要があります。詳しくは、 Fleet Engine。
このドキュメントでは、VPC ネットワーク間の認可を有効にする方法について説明します。 ウェブアプリと Fleet Engine の 2 つですFleet Engine へのリクエストが適切な認可トークンで設定されたら、地図上で車両を追跡できるようになります。
認可を設定する
Fleet Engine では、Fleet Engine で署名された JSON Web Token(JWT)を使用する必要があります。 API メソッド呼び出しに適切なサービス アカウントを使用する 環境をご覧ください。信頼性の低い環境には、スマートフォンやブラウザが含まれます。JWT は、完全に信頼できる環境であるサーバー上で生成されます。JWT は署名され、暗号化されて、有効期限が切れるか無効になるまで、その後のサーバー インタラクションのためにクライアントに渡されます。
バックエンドは、標準のアプリケーションのデフォルト認証情報メカニズムを使用して、Fleet Engine に対して認証と承認を行う必要があります。製造元 適切なサービス アカウントで署名された JWT を使用してください。1 つの サービス アカウントのロールのリストについては、Fleet Engine サービス アカウントのロールをご覧ください。 「Fleet Engine Basics」をご覧ください。
認可の仕組み
Fleet Engine データによる認可には、サーバーサイドとクライアントサイドの両方が含まれます。 説明します。
サーバーサイド認証
フリート追跡アプリケーションで認可を設定する前に、 JSON Web Token を処理できる必要があります。このようにして、Fleet Engine アプリケーションから送信されたリクエストをアクセスが承認されているものとして認識 確認する必要があります。サーバーサイドの JWT の実装手順については、以下をご覧ください。 [Fleet Engine Essentials] の [JSON Web Tokens] で発行します。
フリート トラッキングを実装する際にサーバーからトークンを生成するには、以下をご覧ください。- JSON Web Token の発行に関する一般的なガイドラインには、以下が含まれます。 オンデマンドの移動とスケジュールされたタスクの両方のセクション
- オンデマンドルート: バックエンド サーバー オペレーションのトークンの例
- スケジュール設定されたタスク: フリート内のすべてのタスクと車両を追跡するサンプル トークン
クライアントサイド認証
JavaScript フリート トラッキング ライブラリを使用すると、 認証トークン フェッチャーです。これは、次のいずれかに該当する場合に行われます。
有効なトークンが存在しない(SDK が新しいページの読み込み時に取得ツールを呼び出していない場合や、取得ツールがトークンを返していない場合など)。
トークンの有効期限が切れています。
トークンの有効期限は 1 分以内です。
それ以外の場合、JavaScript フリート トラッキング ライブラリは以前に発行された有効なトークンを使用し、 フェッチャーを呼び出さないでください。
認証トークン フェッチャーを作成する
次のガイドラインに従って認証トークン フェッチャーを作成します。
フェッチャーは、2 つのフィールドを持つデータ構造を返す必要があります。
Promise
を次のように記述します。文字列
token
。数値
expiresInSeconds
。トークンは、取得後この時間の経過後に期限切れになります。認証トークン取得ツールは、例に示すように、取得からライブラリへの経過時間を秒単位で渡す必要があります。
フェッチャーは、サーバー上の URL を呼び出す必要があります。この URL(
SERVER_TOKEN_URL
)はバックエンドの実装によって異なります。「 次のサンプル URL は、GitHub にあるサンプルアプリ バックエンド用です。https://SERVER_URL/token/fleet_reader
例 - 認証トークン フェッチャーを作成する
次の例は、認可トークン取得ツールを作成する方法を示しています。
JavaScript
async function authTokenFetcher(options) {
// options is a record containing two keys called
// serviceType and context. The developer should
// generate the correct SERVER_TOKEN_URL and request
// based on the values of these fields.
const response = await fetch(SERVER_TOKEN_URL);
if (!response.ok) {
throw new Error(response.statusText);
}
const data = await response.json();
return {
token: data.Token,
expiresInSeconds: data.ExpiresInSeconds
};
}
TypeScript
function authTokenFetcher(options: {
serviceType: google.maps.journeySharing.FleetEngineServiceType,
context: google.maps.journeySharing.AuthTokenContext,
}): Promise<google.maps.journeySharing.AuthToken> {
// The developer should generate the correct
// SERVER_TOKEN_URL based on options.
const response = await fetch(SERVER_TOKEN_URL);
if (!response.ok) {
throw new Error(response.statusText);
}
const data = await response.json();
return {
token: data.token,
expiresInSeconds: data.ExpiresInSeconds,
};
}