Веб-токены JSON

Веб-токен JSON (JWT) — это открытый веб-стандарт, который используется для аутентификации и авторизации обмена информацией между клиентом и сервером. Когда пользователь приложения впервые входит в систему с соответствующими учетными данными роли, сервер создает и возвращает закодированный JWT с цифровой подписью для использования в последующих запросах. Этот процесс одновременно проверяет подлинность пользователя и разрешает ему доступ к маршрутам, службам и ресурсам на основе роли его учетной записи.

Для вызовов методов API из сред с низким уровнем доверия Fleet Engine требует использования веб-токенов JSON (JWT), подписанных соответствующей учетной записью службы. К средам с низким уровнем доверия относятся смартфоны и браузеры. JWT создается на вашем сервере, который является полностью доверенной средой . JWT подписывается, шифруется и передается клиенту для последующего взаимодействия с сервером до тех пор, пока не истечет срок его действия или он не станет действительным.

Серверная часть должна аутентифицироваться и авторизоваться в Fleet Engine с использованием стандартных механизмов учетных данных приложения по умолчанию . Обязательно используйте JWT, подписанные соответствующей учетной записью службы. Список ролей сервисных учетных записей см. в разделе Роли сервисных учетных записей Fleet Engine в Основах Fleet Engine .

Напротив, ваш сервер должен аутентифицироваться и авторизоваться в Fleet Engine, используя стандартные механизмы учетных данных приложения по умолчанию .

В отличие от ключей API, JWT недолговечны и ограничивают операции только теми, на выполнение которых авторизована роль. Дополнительную информацию о JWT см. в разделе Веб-токены JSON в Википедии. Подробные сведения о ролях доступа см. в разделе Роли учетной записи службы в этом руководстве.

JWT-элементы

JWT содержат заголовок и раздел утверждения. Раздел заголовка содержит такую ​​информацию, как закрытый ключ, полученный из учетных записей служб, и алгоритм шифрования. Раздел утверждений содержит такую ​​информацию, как время создания JWT, время жизни, службы, к которым JWT заявляет доступ, а также другую информацию об авторизации для доступа к области действия; например, идентификатор средства доставки.

В следующей таблице представлены общие сведения о полях JWT, а также конкретная информация о том, где можно найти значения этих полей в проекте Fleet Engine Cloud.

Поля заголовка JWT

Поле

Описание

Алг

Алгоритм использования. `РС256`.

набрать

Тип токена. `JWT`.

ребенок

Идентификатор закрытого ключа вашего сервисного аккаунта. Это значение можно найти в поле private_key_id файла JSON вашего сервисного аккаунта. Обязательно используйте ключ от сервисной учетной записи с правильным уровнем разрешений.

Поля утверждений JWT

Поле

Описание

это

Адрес электронной почты вашей учетной записи службы, указанный в поле client_email файла JSON вашей учетной записи службы.

суб

Адрес электронной почты вашей учетной записи службы, указанный в поле client_email файла JSON вашей учетной записи службы.

аудит

SERVICE_NAME вашего сервисного аккаунта, в данном случае https://fleetengine.googleapis.com/

там

Временная метка создания JWT, указанная в секундах, прошедших с 00:00:00 UTC, January 1, 1970 . Дайте 10 минут на перекос. Если временная метка находится слишком далеко в прошлом или в будущем, сервер может сообщить об ошибке.

опыт

Временная метка истечения срока действия JWT, указанная в секундах, прошедших с 00:00:00 UTC, January 1, 1970 . Запрос завершается неудачно, если временная метка будет позже, чем на один час.

авторизация

В зависимости от варианта использования может содержать deliveryvehicleid , trackingid , taskid или taskids .

Если указаны идентификаторы задач, область авторизации должна представлять собой массив в одной из следующих форм:

"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 .

Что дальше