Как отозвать JWT токен?

485
06 января 2019, 13:20

Есть Web приложение с использованием JWT токена. Сайт отдает Access и Refresh токены.

Собственно при использовании RefreshToken'а как я понял нам надо убить все старые AccessToken'ы.

Никак не могу понять, как это сделать на Asp.net Core? Ведь мы их не храним как Refresh, они известны только пользователю.

Можно конечно сохранять все токены в некой таблице:

Token | isValid    
00000 | false    
00001 | true

И в дальнейшем просто проверять статус токена, но какое то это странное как по мне решение, да и как даже это реализовать, ведь мы должны как то отловить заход пользователя через старый токен...

Answer 1

Вы можете преобразовать токен в модель и обратно с помощью библиотеки Jose-jwt.

Token newToken = new Token();
EncodeToken(newToken, users);
public partial class Users
{
    public int Id { get; set; }
    public string Login { get; set; }
    public string Password { get; set; }
}
private static void EncodeToken(Token token, Users users)
{
        var secretKey = new byte[]
        {
            164, 60, 194, 0, 161, 189, 41, 38, 130, 89, 141, 164, 45, 170, 159,
            209, 69, 137, 243, 216, 191, 131, 47, 250, 32, 107, 231, 117, 37, 158, 225, 234
        };
        token.id = users.Id;
        token.Key = Jose.JWT.Encode(users, secretKey, Jose.JwsAlgorithm.HS256);
}
private static Users DecodeToken(string token)
{
   var secretKey = new byte[]
   {
            164, 60, 194, 0, 161, 189, 41, 38, 130, 89, 141, 164, 45, 170, 159, 209,
            69, 137, 243, 216, 191, 131, 47, 250, 32, 107, 231, 117, 37, 158, 225, 234
   };
   var users = Jose.JWT.Decode<Users>(token, secretKey);
   return users;
}

Вы можете добавить в класс юзера время действия токена и сверять с текущем временем. Ну или сделать уже другие проверки, необходимые вам(например сверять пароль)

READ ALSO
Как прокрутить HScrollBar в Panel (роликом мыши)

Как прокрутить HScrollBar в Panel (роликом мыши)

Подскажите, как прокрутить HScrollBar в Panel таким образом, чтобы при наведении мыши в Panel активировался HScrollBar и ролик мыши мог им управлять?

184
Как прокрутить Panel через AutoScroll широким шагом?

Как прокрутить Panel через AutoScroll широким шагом?

Подскажите как прокрутить Panel (роликом мыши) через AutoScroll широким шагом, чтобы ширина Panel делилась на две частиК примеру ширина Panel до сужения...

190
DataSet и SQL-запросы

DataSet и SQL-запросы

Если какие-то средства, которые позволяют писать запрос(Например, всякие JOIN'ы) к ADONET DataSet и получить в результате какую-нибудь вьюху?

206
Вернуть значение из метода, если не выполняются условия C#

Вернуть значение из метода, если не выполняются условия C#

Как правильно поступить в ситуации, в методе находится ряд условий, если они удовлетворяются, то возвращается значение из словаряКак поступить,...

221