本文說明如何在啟用網站時發出 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 並以安全的方式簽署。它提供下列項目:
- 專案依附元件宣告
- 以量計價或已排定時程的所有服務帳戶角色完整清單 tasks
- 非使用憑證檔案以外的權杖簽署機制,例如 模擬服務帳戶
- 將簽署權杖附加至從 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 酬載時,請在授權中新增其他憑證附加資訊
部分,將
vehicleid
或tripid
鍵設為車輛值 進行呼叫的 ID 或行程 ID。
適用於已排定的工作
- 伺服器呼叫其他 API 時,權杖也必須包含
適當的聲明。做法如下:
- 將每個鍵的值設為
*
。 - 授予使用者所有
taskids
和deliveryvehicleids
的存取權。待辦 您必須在授權區塊中, 索引鍵taskid
和deliveryvehicleid
。 - 在
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": "*",
}
}
後續步驟
- 驗證設定,以便建立試用車輛,並確保 符記正常運作