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 项目中的字段。
字段 |
说明 |
---|---|
alg |
要使用的算法。`RS256`。 |
typ |
令牌的类型。“JWT”。 |
儿童 |
您的服务账号的私钥 ID。您可以在
服务账号 JSON 文件的 |
字段 |
说明 |
---|---|
iss |
您的服务账号的电子邮件地址,可在
服务账号 JSON 文件的 |
sub |
您的服务账号的电子邮件地址,可在
服务账号 JSON 文件的 |
aud |
您的服务账号的 |
iat |
创建 JWT 时的时间戳(以秒为单位指定)
自 00:00:00 |
exp |
JWT 到期时的时间戳,以秒为单位指定
自 |
授权 |
可能包含 如果指定 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
。此声明必须采用数组形式, 数组应包含完成 请求。请勿添加delivervehicleid
、trackingid
或taskid
声明。 -
trackingid
在调用
GetTaskTrackingInfoAPI
。版权主张必须与跟踪信息一致 ID。请勿添加delivervehicleid
、taskid
或taskids
声明。
后续步骤
- 阅读 Fleet Engine 安全设计,了解完整的 身份验证流程。
- 了解如何从您的服务器颁发 JSON Web 令牌。