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