JSON Web Token (JWT) — это открытый веб-стандарт, который используется для аутентификации и авторизации обмена информацией между клиентом и сервером. Когда пользователь приложения впервые входит в систему с соответствующими учетными данными роли, сервер создает и возвращает закодированный JWT с цифровой подписью для использования в последующих запросах. Этот процесс одновременно проверяет подлинность пользователя и разрешает ему доступ к маршрутам, службам и ресурсам на основе роли его учетной записи.
Fleet Engine требует использования веб-токенов JSON (JWT), подписанных соответствующей учетной записью службы, для вызовов методов API из сред с низким уровнем доверия . К средам с низким уровнем доверия относятся смартфоны и браузеры. JWT создается на вашем сервере, который является полностью доверенной средой . JWT подписывается, шифруется и передается клиенту для последующего взаимодействия с сервером до тех пор, пока не истечет срок его действия или он не станет действительным.
Серверная часть должна аутентифицироваться и авторизоваться в Fleet Engine с использованием стандартных механизмов учетных данных приложения по умолчанию . Обязательно используйте JWT, подписанные соответствующей учетной записью службы. Список ролей сервисных учетных записей см. в разделе Роли сервисных учетных записей Fleet Engine в Основах Fleet Engine .
В отличие от ключей API, JWT недолговечны и ограничивают операции только теми, на выполнение которых авторизована роль. Дополнительную информацию о JWT см. в разделе Веб-токены JSON в Википедии. Подробные сведения о ролях доступа см. в разделе Роли учетной записи службы в этом руководстве.
JWT-элементы
JWT содержат заголовок и раздел утверждения. Раздел заголовка содержит такую информацию, как закрытый ключ, полученный из учетных записей служб, и алгоритм шифрования. Раздел утверждений содержит такую информацию, как время создания JWT, время жизни, службы, к которым JWT запрашивает доступ, и другую информацию об авторизации для доступа к области действия; например, идентификатор средства доставки.
В следующей таблице представлены общие сведения о полях JWT, а также конкретная информация о том, где можно найти значения этих полей в проекте Fleet Engine Cloud.
Поле | Описание |
---|---|
Алг | Алгоритм использования. `РС256`. |
набрать | Тип токена. `JWT`. |
ребенок | Идентификатор закрытого ключа вашего сервисного аккаунта. Это значение можно найти в поле |
Поле | Описание |
---|---|
это | Адрес электронной почты вашей учетной записи службы, указанный в поле |
суб | Адрес электронной почты вашей учетной записи службы, указанный в поле |
аудит | |
там | Временная метка создания JWT, указанная в секундах, прошедших с 00:00:00 |
опыт | Временная метка истечения срока действия JWT, указанная в секундах, прошедших с |
авторизация | В зависимости от варианта использования может содержать Если указаны идентификаторы задач, область авторизации должна представлять собой массив в одной из следующих форм: "taskids": ["task_id_one","task_id_two"] или "taskids": ["*"] |
Заявления Fleet Engine JWT
Fleet Engine использует частные претензии. Использование частных утверждений гарантирует, что только авторизованные клиенты смогут получить доступ к своим данным.
Например, когда ваш сервер выдает веб-токен JSON для мобильного устройства водителя, он должен содержать либо утверждение vehicleid
, либо утверждение deliveryvehicleid
со значением идентификатора транспортного средства этого водителя. Затем, в зависимости от роли водителя, JWT обеспечивают доступ только для конкретного идентификатора транспортного средства, а не для любого другого произвольного идентификатора транспортного средства.
Fleet Engine использует следующие частные утверждения:
Поездки по запросу
-
vehicleid
:- Driver SDK всегда использует это утверждение, независимо от того, работаете ли вы в поездке или в автомобиле. Серверная часть Fleet Engine гарантирует, что транспортное средство связано с запрошенной поездкой, прежде чем вносить изменения.
- Как поставщик услуг вы используете это утверждение со знаком «*», чтобы указать все транспортные средства. Обратите внимание, что JWT может охватывать как операции транспортного средства, так и поездки, даже если это не требуется, что может упростить реализацию подписи JWT.
-
tripid
:- Consumer SDK всегда использует это утверждение.
- Как поставщик услуг вы используете это заявление со знаком «*», чтобы указать все поездки. Обратите внимание, что JWT может охватывать операции как транспортного средства, так и поездки, даже если это не требуется, что может упростить реализацию подписи токена.
Запланированные задачи
deliveryvehicleid
Используйте при вызове API для каждого транспортного средства.
taskid
Используйте при вызове API для каждой задачи.
taskids
Используйте при вызове
BatchCreateTasksAPI
. Это утверждение должно быть в форме массива, и массив должен содержать все идентификаторы задач, необходимые для выполнения запроса. Не включайте утвержденияdelivervehicleid
,trackingid
илиtaskid
.trackingid
Используйте при вызове
GetTaskTrackingInfoAPI
. Заявление должно соответствовать идентификатору отслеживания в запросе. Не включайте утвержденияdelivervehicleid
,taskid
илиtaskids
.
Что дальше
- Прочтите о системе безопасности Fleet Engine , чтобы понять весь процесс аутентификации.
- Узнайте, как выдавать веб-токены JSON с вашего сервера.