Рекомендуемые инструменты
Анализ JWT
Инструмент анализа JWT Token, анализ и проверка JSON Web Token
Обзор инструмента: Инструмент Анализа JWT
JWT (JSON Web Token) - это компактный и безопасный для URL формат токена, используемый для безопасной передачи информации между сторонами. Он в основном используется в веб-аутентификации, API аутентификации, обмене информацией и других сценариях, являясь одной из важных технологий современной веб-разработки.
Что такое Инструмент Анализа JWT
Инструмент Анализа JWT разбирает структурированные данные и показывает ключевые поля.
Как пользоваться
- Вставьте данные для разбора.
- Инструмент извлечет и покажет поля.
- Скопируйте нужные поля.
Частые сценарии
- Проверка полей при интеграциях
- Отладка структуры и формата
- Документация структурированных данных
❓ Частые вопросы
В1: Разбор не удался?
О: Убедитесь, что формат полный.
В2: Не хватает полей?
О: Проверьте, что вход содержит все поля.
В3: Проверка подписи?
О: Инструмент только разбирает; нужна валидация ключами.
✨ Основные Характеристики
- 🔍 Полный Анализ : Детальный анализ Header, Payload и Signature
- ✅ Валидация Формата : Автоматическая проверка корректности структуры JWT
- 📊 Визуализация : Структурированная информация отображается в формате JSON
- 🔧 Поддержка Отладки : Проверка и отладка токенов во время разработки
- 📋 Копирование Одним Кликом : Результаты анализа могут быть скопированы напрямую
📖 Примеры Использования
Стандартный JWT
Входной JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6ItCY0LLQsNC9INCf0LXRgtGA0L7QsiIsImlhdCI6MTUxNjIzOTAyMn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Результат Анализа:
Header:
{
"alg": "HS256",
"typ": "JWT"
}
Payload:
{
"sub": "1234567890",
"name": "Иван Петров",
"iat": 1516239022
}
Signature:
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Сложный Payload
Входной JWT (Сложные Claims):
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEyMzQ1In0.eyJpc3MiOiJodHRwczovL2F1dGgudG9vbG1pLmNvbSIsInN1YiI6InVzZXJfMTIzNDUiLCJhdWQiOlsiYXBpLnRvb2xtaS5jb20iLCJhZG1pbi50b29sbWkuY29tIl0sImV4cCI6MTY4NzUzNjAwMCwiaWF0IjoxNjg3NDQ5NjAwLCJuYmYiOjE2ODc0NDk2MDAsImp0aSI6ImFiY2RlZi0xMjM0NTYiLCJuYW1lIjoi0JzQsNGA0LjRjyDQn9C10YLRgNC+0LLQsCIsImVtYWlsIjoibWFyaWFAZXhhbXBsZS5jb20iLCJyb2xlcyI6WyJ1c2VyIiwiYWRtaW4iXSwicGVybWlzc2lvbnMiOlsicmVhZCIsIndyaXRlIiwiZGVsZXRlIl19.signature_here
Результат Анализа:
Header:
{
"alg": "RS256",
"typ": "JWT",
"kid": "12345"
}
Payload:
{
"iss": "https://auth.toolmi.com",
"sub": "user_12345",
"aud": ["api.toolmi.com", "admin.toolmi.com"],
"exp": 1687536000,
"iat": 1687449600,
"nbf": 1687449600,
"jti": "abcdef-123456",
"name": "Мария Петрова",
"email": "maria@example.com",
"roles": ["user", "admin"],
"permissions": ["read", "write", "delete"]
}
🎯 Сценарии Применения
1. Система Веб-аутентификации
Аутентификация пользователей с использованием JWT:
// Процесс входа
const войти = async (email, пароль) => {
try {
const ответ = await fetch('/api/auth/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ email, пароль })
});
if (ответ.ok) {
const данные = await ответ.json();
const токен = данные.token;
// Сохранить JWT в локальном хранилище
localStorage.setItem('authToken', токен);
// Анализировать содержимое токена
const payload = анализироватьJWT(токен);
console.log('Информация пользователя:', payload);
return { успех: true, пользователь: payload };
} else {
throw new Error('Ошибка входа');
}
} catch (ошибка) {
console.error('Ошибка входа:', ошибка);
return { успех: false, ошибка: ошибка.message };
}
};
// Функция анализа JWT
const анализироватьJWT = (токен) => {
try {
const base64Url = токен.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
} catch (ошибка) {
console.error('Ошибка анализа JWT:', ошибка);
return null;
}
};
// Проверить состояние аутентификации
const проверитьСостояниеAuth = () => {
const токен = localStorage.getItem('authToken');
if (!токен) {
return { аутентифицирован: false };
}
const payload = анализироватьJWT(токен);
if (!payload) {
return { аутентифицирован: false };
}
// Проверить дату истечения токена
const текущееВремя = Math.floor(Date.now() / 1000);
if (payload.exp && payload.exp < текущееВремя) {
localStorage.removeItem('authToken');
return { аутентифицирован: false, причина: 'истек' };
}
return {
аутентифицирован: true,
пользователь: payload,
истекаетЧерез: payload.exp
};
};
2. API Аутентификация
Использование JWT в API запросах:
// Класс API клиента
class КлиентAPI {
constructor(базовыйUrl) {
this.базовыйUrl = базовыйUrl;
this.токен = localStorage.getItem('authToken');
}
// Запрос с заголовком аутентификации
async запрос(endpoint, опции = {}) {
const url = `${this.базовыйUrl}${endpoint}`;
const заголовки = {
'Content-Type': 'application/json',
...опции.заголовки
};
// Добавить JWT токен в заголовок Authorization
if (this.токен) {
заголовки.Authorization = `Bearer ${this.токен}`;
}
try {
const ответ = await fetch(url, {
...опции,
headers: заголовки
});
// Если ошибка 401, токен недействителен
if (ответ.status === 401) {
this.обработатьНеавторизованный();
throw new Error('Требуется аутентификация');
}
if (!ответ.ok) {
throw new Error(`HTTP ошибка! статус: ${ответ.status}`);
}
return await ответ.json();
} catch (ошибка) {
console.error('Ошибка API запроса:', ошибка);
throw ошибка;
}
}
// Обработать ошибку аутентификации
обработатьНеавторизованный() {
localStorage.removeItem('authToken');
this.токен = null;
// Перенаправить на страницу входа
window.location.href = '/login';
}
// Обновить токен
обновитьТокен(новыйТокен) {
this.токен = новыйТокен;
localStorage.setItem('authToken', новыйТокен);
}
// Получить профиль пользователя
async получитьПрофильПользователя() {
return await this.запрос('/api/user/profile');
}
// Получить данные
async получитьДанные(endpoint) {
return await this.запрос(endpoint);
}
// Обновить данные
async обновитьДанные(endpoint, данные) {
return await this.запрос(endpoint, {
method: 'PUT',
body: JSON.stringify(данные)
});
}
}
// Пример использования
const клиентApi = new КлиентAPI('https://api.toolmi.com');
// Получить профиль пользователя
клиентApi.получитьПрофильПользователя()
.then(профиль => {
console.log('Профиль пользователя:', профиль);
})
.catch(ошибка => {
console.error('Ошибка получения профиля:', ошибка);
});
🔧 Технические Детали
Структура JWT
JWT состоит из трех частей:
1. Header (Заголовок)
{
"alg": "HS256", // Алгоритм подписи
"typ": "JWT" // Тип токена
}
2. Payload (Полезная нагрузка)
{
"iss": "issuer", // Эмитент
"sub": "subject", // Субъект
"aud": "audience", // Аудитория
"exp": 1234567890, // Дата истечения
"iat": 1234567890, // Время выдачи
"nbf": 1234567890, // Не действителен до
"jti": "jwt-id" // ID JWT
}
3. Signature (Подпись)
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
Стандартные Claims
Стандартные claims, используемые в JWT:
- iss (Issuer) : Эмитент токена
- sub (Subject) : Субъект токена (обычно ID пользователя)
- aud (Audience) : Аудитория токена
- exp (Expiration Time) : Дата истечения (Unix timestamp)
- iat (Issued At) : Время выдачи
- nbf (Not Before) : Время начала действия
- jti (JWT ID) : Уникальный идентификатор JWT
💡 Советы по Использованию
- Проверка Истечения : Проверять дату истечения токена с помощью claim exp
- Безопасность : Не включать конфиденциальную информацию в payload
- Проверка Подписи : Всегда проверять подпись в продакшн среде
- Размер Токена : Следить, чтобы payload не был слишком объемным
⚠️ Важные Замечания
- Конфиденциальная Информация : Payload JWT не зашифрован, поэтому не должен включать конфиденциальную информацию
- Проверка Подписи : Этот инструмент только анализирует, не проверяет подписи
- Дата Истечения : Не использовать истекшие токены
- Место Хранения : Обращать внимание на место хранения токенов в браузере (предотвращение XSS)
🚀 Как Использовать
- Ввод JWT : Вставьте JWT токен для анализа в область ввода
- Автоматический Анализ : Header, Payload и Signature анализируются автоматически при вводе
- Проверка Результатов : Проверьте детальную информацию каждой части в формате JSON
- Использование Копирования : Используйте кнопку "Копировать" для копирования результатов анализа в буфер обмена
- Использование в Отладке : Используйте для проверки и отладки токенов во время разработки
Совет : Этот инструмент обрабатывает локально на стороне клиента и не отправляет JWT токены на сервер, гарантируя безопасность.