發出 JSON Web Token

本文說明如何在啟用網站時發出 JSON Web Token 和行動應用程式存取 Fleet Engine 資料如果您還沒有這樣做 請閱讀 Fleet Engine 的安全性 部分 JSON Web Token 專區。透過 Fleet Engine 服務,您可以在 方法如下:

  • 使用授權程式庫:Google 建議您在下列情況使用授權程式庫: 您的程式碼集是以 Java 編寫這個程式庫會處理所有產品的 JWT 核發作業 以便大幅簡化您的服務 。
  • 建立自己的 JWT:如果無法使用我們的 JWT 程式庫,您將需要 並建構到自己的程式碼集中本節將提供各種範例 每個情境的 JWT。

使用 Java 的授權程式庫

如要使用 Java 適用的 Fleet Engine 授權程式庫,請造訪 GitHub 存放區這個程式庫可簡化 Fleet Engine 的建構過程 JWT 並以安全的方式簽署。它提供下列項目:

  • 專案依附元件宣告
  • 以量計價或已排定時程的所有服務帳戶角色完整清單 工作
  • 非使用憑證檔案以外的權杖簽署機制,例如 模擬服務帳戶
  • 將簽署權杖附加至從 gRPC 虛設常式或 GAPIC 用戶端
  • 整合簽署人與 Fleet Engine 用戶端程式庫的操作說明

如果您是透過程式碼發布 JWT

如果無法使用 Java 授權程式庫,您必須實作 JWT 導入自己的程式碼集本節提供幾項指南 權杖請參閱 Fleet Engine 中的安全性下方的 JSON Web Token。 專區中查看服務帳戶角色、JWT 欄位和憑證附加資訊清單。詳情請見 下一節提供隨選行程或 JWT 範例 排程工作

一般指南

  • 使用適當角色。這可以確保要求權杖的使用者 有權查看權杖授予他們存取權的資訊。 詳細說明:
    • 簽署要傳遞至行動裝置的 JWT 時,請使用該服務 做為驅動程式或消費者 SDK 角色的帳戶。否則,行動裝置 裝置能夠變更不應出現的狀態。
    • 同樣地,簽署用於特殊權限呼叫的 JWT 時, 請務必 使用具備正確的 Fleet Engine 管理員角色的服務帳戶。 否則作業就會失敗。
  • 隻共用已建立的權杖。絕不向他人透露 建立符記
  • 如果是 gRPC 呼叫,附加憑證的機制取決於 以及用於發出呼叫的語言和架構用來指定 則是在 HTTP 呼叫中加入 Authorization 標頭 符記,其值為符記
  • 傳回到期時間。您的伺服器必須針對 通常以秒為單位
  • 以符記不記名的方式直接建立並簽署 JSON,不要使用 OAuth 2.0 存取權杖,請詳閱「服務帳戶」操作說明 沒有 OAuth 的授權 說明文件。

隨選行程適用

  • 建立 JWT 酬載時,請在授權中新增其他憑證附加資訊 部分,將 vehicleidtripid 鍵設為車輛值 進行呼叫的 ID 或行程 ID。

適用於已排定的工作

  • 伺服器呼叫其他 API 時,權杖也必須包含 適當的聲明。做法如下:
    • 將每個鍵的值設為 *
    • 授予使用者所有 taskidsdeliveryvehicleids 的存取權。待辦 您必須在授權區塊中, 索引鍵 taskiddeliveryvehicleid
    • taskids 聲明中使用星號 (*),必須是 只有陣列中的元素

隨選行程的 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": {
     "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": ["*"]
       }
    }

後端伺服器 per-delivery-vehicle 作業的權杖範例

    {
      "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 機群追蹤程式庫」一文 使用此權杖的用戶端實作:

  • 請使用 Cloud IAM 角色 Fleet Engine Delivery Fleet Reader 簽署權杖。

   {
      "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": "*",
       }
    }

後續步驟

  • 驗證設定,以便建立試用車輛,並確保 符記正常運作