Я пишу мобильное приложение, которое использует ASP.NET Core для своего бэкэнда. Для аутентификации пользователя я сначала решил использовать JWT. Но в моем случае есть некоторые проблемы с JWT, такие как аннулирование пользовательских токенов при необходимости. Например, если телефон пользователя был украден и он хочет выйти со всех устройств.
Также я обнаружил, что некоторые статьи также не рекомендуют не использовать JWT для сессии.
Вы не можете сделать недействительными отдельные токены JWT
И есть еще проблемы с безопасностью. В отличие от сеансов, которые могут быть признаны недействительными сервером в любое время, они не могут быть признаны недействительными. По замыслу они будут действительны до истечения срока их действия, независимо от того, что произойдет. Это означает, что вы не можете, например, аннулировать сеанс злоумышленника после обнаружения компрометации. Вы также не можете сделать недействительными старые сеансы, когда пользователь меняет свой пароль.
http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/
Итак, я попытался использовать традиционные сессии в ядре asp.net
Вот пример кода, который я использую
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.Cookie.HttpOnly = true;
// Make the session cookie essential
options.Cookie.IsEssential = true;
});
И проблема в том, что ядро asp.net использует только куки для хранения идентификатора сессии. И в мобильном приложении мы не можем использовать куки. Вместо этого мы можем передать идентификатор сессии в заголовке запроса или в параметре URL. Как это
https://localhost/users/6?sessionid=abcdefg...xyz
Кто-нибудь знает, что мы можем сделать в этой ситуации?