Веб-токены JSON

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

Для вызовов методов API из сред с низким уровнем доверия (смартфонов и браузеров) Fleet Engine требует использовать веб-токены JSON (JWT).

Токен JWT создается на вашем сервере, подписывается, шифруется и передается клиенту для последующих взаимодействий с сервером, пока не истечет срок его действия или он не станет недействительным.

Основные сведения

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

Элементы JWT

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

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

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

Поле

Описание

alg

Алгоритм, который нужно использовать. `RS256`.

typ

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

ребенок

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

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

Поле

Описание

iss

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

замена

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

австралийский доллар

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. Если временная метка относится к будущему и отстоит от текущего момента более чем на час, запрос не будет выполнен.

авторизация

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

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

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

или

"taskids": ["*"]

Утверждения JWT Fleet Engine

Fleet Engine использует частные утверждения. Использование частных утверждений гарантирует, что только авторизованные клиенты могут получить доступ к своим собственным данным.

Например, когда ваш сервер выдает веб-токен JSON для мобильного устройства водителя, он должен содержать утверждение vehicleid или deliveryvehicleid со значением идентификатора транспортного средства этого водителя. Затем, в зависимости от роли водителя, JWT разрешают доступ только к определенному идентификатору транспортного средства, а не к любому произвольному идентификатору транспортного средства.

Fleet Engine использует следующие частные утверждения:

Поездки по запросу

  • vehicleid:
    • Driver SDK всегда использует это утверждение, независимо от того, выполняется ли поездка или используется транспортное средство. Серверная часть Fleet Engine проверяет, связано ли транспортное средство с запрошенной поездкой, прежде чем вносить изменения.
    • Токен JWT может охватывать операции как с транспортными средствами, так и с поездками, даже если это не требуется. Это может упростить реализацию подписи JWT.
  • tripid:
    • Consumer SDK всегда использует это утверждение.
    • JWT может охватывать операции как с транспортными средствами, так и с рейсами, даже если это не требуется. Это может упростить подписание токенов.

Запланированные задачи

  • deliveryvehicleid

    Используйте его при вызове API для отдельных транспортных средств доставки.

  • taskid

    Используйте при вызове Tasks API.

  • taskids

    Используйте при звонках на номер BatchCreateTasksAPI. Это утверждение должно быть в виде массива, содержащего все идентификаторы задач, необходимые для выполнения запроса. Не включайте заявления о delivervehicleid, trackingid или taskid.

  • trackingid

    Используйте при вызове GetTaskTrackingInfoAPI. Заявка должна соответствовать идентификатору отслеживания в запросе. Не включайте заявления о delivervehicleid, taskid или taskids.

Дальнейшие действия