JSON Web 令牌

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

对于在低信任环境中调用 API 方法时,Fleet Engine 要求 使用由适当服务账号签名的 JSON 网络令牌 (JWT)。 低信任的环境包括智能手机和浏览器。JWT 源自您的服务器,这是一个完全可信的环境。JWT 经过签名和加密,并传递给客户端,以供后续服务器使用 直至过期或失效。对于 服务账号角色的列表,请参阅 Fleet Engine 服务账号角色 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

如果指定 taskids,则授权范围必须为 1 中的数组 以下形式:

"taskids": ["task_id_one","task_id_two"]

"taskids": ["*"]

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声明。

后续步骤