JSON Web 令牌

JSON Web 令牌 (JWT) 是一种开放式 Web 标准,用于身份验证和 授权客户端与服务器之间的信息交换。当应用 用户首次使用适当的角色凭据登录后,服务器会创建 并返回经过数字签名的编码 JWT,供后续请求使用。 此过程不仅会验证用户身份,还会授权用户访问路由, 提供不同的服务和资源

Fleet Engine 要求使用 JSON Web 令牌 (JWT), 适当的服务账号,用于低信任度 API 方法调用 环境。低信任的环境包括智能手机和浏览器。JWT 源自您的服务器,这是一个完全可信的环境。JWT 经过签名和加密,并传递给客户端,以供后续服务器使用 直至过期或失效。

您的后端应使用 标准的应用默认凭据机制。制造商 请务必使用由相应服务账号签名的 JWT。对于 服务账号角色的列表,请参阅 Fleet Engine 服务账号角色 Fleet Engine 基础知识

与 API 密钥不同,JWT 的生命周期很短,而且只能执行 有权执行哪些操作如需详细了解 JWT,请参阅 JSON Web Tokens。有关访问角色的详情,请参阅服务 账号角色

JWT 元素

JWT 包含标头和声明部分。标头部分包含 例如从服务账号获取的私钥,以及 加密算法。声明部分包含 JWT 的 创建时间、存留时间、JWT 声明的服务 访问权限和其他授权信息以限定访问权限;用于 例如送货车辆 ID。

下表提供了有关 JWT 字段的一般描述性详情, 以及有关在何处可以找到这些转化 Fleet Engine Cloud 项目中的字段。

JWT 标头字段

字段

说明

alg

要使用的算法。`RS256`。

typ

令牌的类型。“JWT”。

儿童

您的服务账号的私钥 ID。您可以在 服务账号 JSON 文件的 private_key_id 字段。制造商 请务必使用具有正确权限级别的服务账号中的密钥。

JWT 声明字段

字段

说明

iss

您的服务账号的电子邮件地址,可在 服务账号 JSON 文件的 client_email 字段。

sub

您的服务账号的电子邮件地址,可在 服务账号 JSON 文件的 client_email 字段。

aud

您的服务账号的 SERVICE_NAME, 在本例中为 https://fleetengine.googleapis.com/

iat

创建 JWT 时的时间戳(以秒为单位指定) 自 00:00:00 UTC, January 1, 1970 起已过去。等待 10 分钟,使数据出现偏差。 如果时间戳过于久远或将来, 服务器可能会报告错误。

exp

JWT 到期时的时间戳,以秒为单位指定 自 00:00:00 UTC, January 1, 1970起。如果 timestamp。

授权

可能包含 deliveryvehicleid,具体取决于用例。 trackingidtaskidtaskids

Fleet Engine JWT 声明

Fleet Engine 使用不公开声明。使用私有声明可以确保 授权的客户端可以访问自己的数据。

例如,当您的服务器为驾驶员的移动设备签发 JSON 网络令牌时, 它应包含 vehicleid 声明或 deliveryvehicleid 索赔,其中包含该驾驶员的车辆 ID 的值。然后, 根据驾驶员角色,JWT 仅启用对特定车辆的访问权限 而不是任何其他任意车辆 ID。

Fleet Engine 使用以下不公开声明:

按需行程

  • vehicleid
    • 无论是否针对行程进行操作,驱动程序 SDK 都会始终使用此声明 或车辆。Fleet Engine 后端可确保车辆 关联的数据。
    • 作为服务提供商,您可以在此声明中加上“*”以匹配全部 汽车。请注意,JWT 可涵盖车辆和行程 操作(即使并非必需),这可以简化 JWT 签名 实施。
  • tripid
    • 使用方 SDK 始终会使用此声明。
    • 作为服务提供商,您可以在此声明中加上“*”以匹配全部 行程。请注意,JWT 可涵盖车辆和行程操作, (即使并非必需),这可以简化令牌签名 实施。

计划任务

  • deliveryvehicleid

    在调用每辆配送车辆时使用 API。

  • taskid

    在调用按任务划分的 API 时使用。

  • taskids

    通话时使用 BatchCreateTasksAPI。此声明必须采用数组形式, 数组应包含完成 请求。请勿添加 delivervehicleidtrackingidtaskid声明。

  • trackingid

    在调用 GetTaskTrackingInfoAPI。版权主张必须与跟踪信息一致 ID。请勿添加 delivervehicleidtaskidtaskids声明。

后续步骤