Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про C#: jwt, authentication, security

Можешь вкратце описать работу технологии аутентификации на базе JWT?

Вопрос проверяет понимание механизма работы JSON Web Tokens для аутентификации пользователей в веб-приложениях и API.

Короткий ответ

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

Длинный ответ

JWT обеспечивает stateless-аутентификацию, что означает, что серверу не нужно хранить сессию пользователя.

Структура JWT:
Токен состоит из трех частей, разделенных точками:

  • Header (алгоритм и тип токена)

  • Payload (данные пользователя - claims)

  • Signature (подпись для верификации)

Процесс аутентификации:

  1. Логин: Пользователь отправляет учетные данные

  2. Создание токена: Сервер проверяет credentials и генерирует JWT

  3. Возврат токена: Клиент получает токен и сохраняет его (обычно в localStorage или cookies)

  4. Использование: Клиент отправляет токен в заголовке Authorization при каждом запросе

  5. Верификация: Сервер проверяет подпись и извлекает данные из payload

// Пример создания JWT в C#
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(_secret);
var tokenDescriptor = new SecurityTokenDescriptor
{
    Subject = new ClaimsIdentity(new[] 
    {
        new Claim(ClaimTypes.Name, username),
        new Claim(ClaimTypes.Role, "User")
    }),
    Expires = DateTime.UtcNow.AddHours(1),
    SigningCredentials = new SigningCredentials(
        new SymmetricSecurityKey(key), 
        SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);

Вывод:
JWT идеально подходит для масштабируемых API и мобильных приложений, где важна производительность и отсутствие состояния на сервере.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • C#

    C#

Ключевые слова

#jwt

#authentication

#security

Подпишись на C# Developer в телеграм