/
va1eriy
/
taskwards
Обзор
Документация
Войти
/
va1eriy
/
taskwards
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Taskwards.Api/Features/Auth/Models/RefreshTokenValidationResult.cs
80 строк
3 KB
Valeriy Kokorev
Implement JWT refresh token rotation with attack detection
06 фев 2026, 13:50
06 фев 2026, 13:50
4199d8c
Код
Авторство
О чём код?
using Taskwards.Api.Infrastructure.Data.Entities; namespace Taskwards.Api.Features.Auth.Models; /// <summary> /// Результат валидации refresh token /// </summary> public class RefreshTokenValidationResult { /// <summary> /// Токен валиден и может быть использован /// </summary> public bool IsValid { get; init; } /// <summary> /// Refresh token entity из базы данных (null если токен не найден) /// </summary> public RefreshToken? Token { get; init; } /// <summary> /// Тип ошибки валидации (null если токен валиден) /// </summary> public RefreshTokenValidationError? Error { get; init; } /// <summary> /// Флаг обнаружения нарушения безопасности (повторное использование отозванного токена) /// </summary> public bool IsSecurityBreach { get; init; } /// <summary> /// Создает успешный результат валидации /// </summary> /// <param name="token">Валидный refresh token</param> public static RefreshTokenValidationResult Success(RefreshToken token) => new() { IsValid = true, Token = token, Error = null, IsSecurityBreach = false }; /// <summary> /// Создает результат валидации с ошибкой /// </summary> /// <param name="error">Тип ошибки валидации</param> /// <param name="isSecurityBreach">Флаг обнаружения атаки (по умолчанию false)</param> public static RefreshTokenValidationResult Failure(RefreshTokenValidationError error, bool isSecurityBreach = false) => new() { IsValid = false, Token = null, Error = error, IsSecurityBreach = isSecurityBreach }; } /// <summary> /// Типы ошибок валидации refresh token /// </summary> public enum RefreshTokenValidationError { /// <summary> /// Токен не найден в базе данных /// </summary> TokenNotFound, /// <summary> /// Токен истек /// </summary> TokenExpired, /// <summary> /// Токен отозван /// </summary> TokenRevoked, /// <summary> /// Отозванный токен использован повторно - обнаружена атака /// </summary> TokenRevokedAndReused }