Как я могу прочитать идентификатор сессии из заголовка запроса или URL-адреса в ASP.NET Core? - PullRequest
0 голосов
/ 02 июня 2019

Я пишу мобильное приложение, которое использует 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

Кто-нибудь знает, что мы можем сделать в этой ситуации?

1 Ответ

0 голосов
/ 02 июня 2019

По сути, вы можете создать свой собственный jwt с JwtSecurityTokenHandler () в ядре .net. После создания вы можете передать созданный jwt с заголовком ответа вашему клиенту. Клиент также отправляет jwt для каждого аутентифицированного заголовка запроса в серверную часть. Вы можете получить этот jwt с фильтрами или классами промежуточного программного обеспечения, и вы можете проверить его.

Мы реализуем этот способ при использовании аутентификации на основе токенов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...