JSON ウェブトークンを発行する

このドキュメントでは、ウェブ機能を有効にする際に JSON Web Token を発行する方法について説明します。 Fleet Engine データへのアクセスを制御できます。まだ行っていない場合は Security in Fleet EngineJSON Web Token をすでに読んでください。 できます。Fleet Engine サービスでは、いずれかの方法で JWT を発行できます。 できます。

  • 認可ライブラリを使用する - 次の場合はこの方法をおすすめします。 コードベースが Java で記述されているとします。このライブラリは、すべての ID に対して JWT の発行を 必要なユースケース シナリオを取り上げ、 説明します。
  • 独自の JWT を作成する - Google の JWT ライブラリを使用できない場合は、 独自のコードベースに組み込むことができますこのセクションでは、さまざまな例を JWT の数を検討します。

Java の認可ライブラリを使用する

Java 用の Fleet Engine 認可ライブラリを使用するには、GitHub リポジトリをご覧ください。ライブラリは Fleet Engine の構築を簡素化する JWT で安全に署名します。次の機能を提供します。

  • プロジェクトの依存関係の宣言
  • オンデマンドルートまたは運行スケジュールに基づくすべてのサービス アカウント ロールの完全なリスト タスク
  • 次のような認証情報ファイル以外のトークン署名メカニズム サービス アカウントの権限借用
  • gRPC スタブまたは GAPIC クライアント
  • 署名者と Fleet Engine クライアント ライブラリを統合する手順

コードから JWT を発行する場合

Java 用の認可ライブラリを使用できない場合は、JWT を実装する必要があります。 独自のコードベースで実行できますこのセクションでは、Terraform ワークフローの 使用できます。Security in Fleet EngineJSON Web Token をご覧ください。 セクションをご覧ください。詳しくは、 次のセクションでは、オンデマンドルートまたは スケジュール設定されたタスクです。

一般的なガイドライン

  • 適切なロールを使用する。これにより、トークンをリクエストしたユーザーが トークンでアクセス権が付与されている情報を表示する権限があります。 詳細は以下のとおりです。
    • モバイル デバイスに渡す JWT に署名する場合は、このサービス ユーザーに付与する必要があります。それ以外の場合、 デバイスは、持たないはずの状態を変更できるようになります。
    • 同様に、特権呼び出しに使用する JWT に署名する場合は、 必ず、 適切な Fleet Engine 管理者ロールを持つサービス アカウントを使用する。 そうでない場合、オペレーションは失敗します。
  • 作成したトークンのみを共有します。リソースへのアクセスに使用する認証情報は トークンを作成します。
  • gRPC 呼び出しの場合、トークンを接続するメカニズムは フレームワークを使用します。リソースを指定するメカニズムは、 Authorization ヘッダーと署名なしヘッダーを含める方法があります。 このトークンの値はトークンです。
  • 有効期限を返します。サーバーは、有効期限内の 通常は秒単位です。
  • JSON をトークン署名なしとして直接作成して署名するには。 OAuth 2.0 アクセス トークンについては、サービス アカウント Identity Developer API で ご覧ください

オンデマンドの賃走の場合

  • JWT ペイロードを作成するときに、認可にクレームを追加する キー vehicleid または tripid が車両の値に設定されたセクション 呼び出し先の ID またはルート ID。

スケジュール設定されたタスクの場合

  • サーバーが他の API を呼び出す場合、トークンには 適切な申し立てを行います。そのためには、次の操作を行います。
    • 各キーの値を * に設定します。
    • このユーザーに、すべての taskidsdeliveryvehicleids へのアクセスを許可します。タスク この場合、承認セクションに taskiddeliveryvehicleid キー。
    • taskids クレームでアスタリスク(*)を使用する場合は、 配列内の唯一の要素です

オンデマンド賃走の JWT の例

このセクションでは、オンデマンド 移動します

バックエンド サーバー オペレーション用のトークンの例

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_provider_service_account"
}
.
{
  "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
  "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "vehicleid": "*",
     "tripid": "*"
   }
}

ドライバアプリ オペレーションのトークンの例

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_driver_service_account"
}
.
{
  "iss": "driver@yourgcpproject.iam.gserviceaccount.com",
  "sub": "driver@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "vehicleid": "driver_12345"
   }
}

コンシューマ アプリ オペレーション用のトークンの例

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_consumer_service_account"
}
.
{
  "iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
  "sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "tripid": "trip_54321"
   }
}

スケジュール設定されたタスクの JWT の例

このセクションでは、スケジュール設定された一般的なシナリオでの JWT の例について説明します。 できます。

バックエンド サーバー オペレーション用のトークンの例

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "taskid": "*"
       }
    }

バックエンド サーバーのタスクの一括作成オペレーションのトークンの例

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "taskids": ["*"]
       }
    }

バックエンド サーバーの配送車両ごとのオペレーション用のトークンの例

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "deliveryvehicleid": "*"
       }
    }

ドライバアプリのトークンの例

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_delivery_driver_service_account"
    }
    .
    {
      "iss": "driver@yourgcpproject.iam.gserviceaccount.com",
      "sub": "driver@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "deliveryvehicleid": "driver_12345"
       }
    }

コンシューマ アプリのトークンの例

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_delivery_consumer_service_account"
    }
    .
    {
      "iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
      "sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "trackingid": "shipment_12345"
       }
    }

すべてのタスクと車両を追跡するトークンの例

次の例は、すべてのタスクとリソースを追跡するトークンであり、 把握することができますJavaScript フリート トラッキング ライブラリを設定するをご覧ください。 クライアントサイドの実装では、次のトークンを使用します。

  • Fleet Engine Delivery Fleet Reader Cloud IAM ロールを使用してトークンに署名します。

   {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_consumer_service_account"
    }
    .
    {
      "iss": "superuser@yourgcpproject.iam.gserviceaccount.com",
      "sub": "superuser@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "scope": "https://www.googleapis.com/auth/xapi",
      "authorization": {
         "taskid": "*",
         "deliveryvehicleid": "*",
       }
    }

次のステップ

  • 設定を確認して、試用版の車両を作成し、 トークンが意図したとおりに機能しているか