Работа с JWT

Зачем нужен JWT-токен?

Клиент с SDK получает челлендж от BotProtection сервера, а затем отправляет результат на внутренний сервер компании в виде JWT-токена. Таким образом, можно проверить, что челлендж не был пропущен клиентом, а также проверить результат в реальном времени (бот или не бот).

Что такое JWT-токен?

JWT или JSON Web Token - это интернет-стандарт для создания токенов доступа на основе JSON, которые проверяют некоторое количество утверждений.

Например, сервер может сгенерировать токен с утверждением «вошел в систему как администратор» и предоставить его клиенту. Затем клиент может использовать этот токен, чтобы доказать, что он вошел как администратор. Токены подписаны приватным ключом одной стороны (обычно сервером), чтобы обе стороны могли проверить, является ли токен легитимным. Токена спроектированы так, чтобы быть компактными, безопасными для URL и использоваться в контексте единого входа (single-sign-on, SSO) веб-браузера. Утверждения токена JWT обычно могут использоваться для передачи идентификационных данных аутентифицированных пользователей между поставщиком удостоверений и поставщиком услуг или для любых других типов утверждений, каких требуют бизнес-процессы.

JWT используют другие стандарты на основе JSON: JSON Web Signature и JSON Web Encryption.

Структура

Заголовок

{

"alg" : "RS256",

"typ" : "JWT"

}

Определяет, какой алгоритм используется для генерации подписи.

RS256 указывает, что этот токен подписан с помощью RS256.

Типичными криптографическими алгоритмами являются HMAC с SHA-256 (HS256) и подпись RSA с SHA-256 (RS256).

Содержание

{

"challenge_id": "b5fbbb86-1c7e-4f78-bb8b-1a6f2f17b17d",

"result": 94,

"iat": 1578597646, "exp": 1578597706

}

Содержит набор данных (утверждений). Спецификация JWT определяет семь зарегистрированных имен, которые являются стандартными полями, обычно включаемыми в токены. Пользовательские утверждения обычно также включаются, в зависимости от назначения токена.

В этом примере есть стандартное поле «Срок выдачи» (iat) и поле «Срок действия» (exp). Если время exp меньше, чем время проверки токена, то проверка не пройдена.

challenge_id и result - это настраиваемые поля, которые используются для получения информации о пройденном челлендже (бот / не бот).

Подпись

RSASHA256( base64urlEncoding(header)+ '.' + base64urlEncoding(payload), secret )

Проверяет подпись токена. Подпись рассчитывается путем кодирования заголовка и содержания с использованием Base64url Encoding и объединения их вместе через точку. Затем эта строка проходит через криптографический алгоритм, указанный в заголовке, в данном случае RSASHA256. Кодировка Base64url аналогична base64, но использует другие не алфавитно-цифровые символы и не содержит отступов.

Last updated