Где и как хранить токен доступа и обновить токен - PullRequest
1 голос
/ 11 июня 2019

У меня есть веб-приложение MVC dotnet core 2.2, которое использует веб-API для выполнения некоторых запросов к базе данных.Я реализовал аутентификацию на основе токенов JWT для веб-API.Токены создаются в API, и веб-приложение получило токен доступа, токен истечения и токен обновления.Мне нужно хранить данные этого токена на моем клиенте, чтобы я мог использовать его для доступа к веб-API (до истечения срока его действия) или создать новый токен с помощью токена обновления, если токен истекает.

Любая помощь по этому вопросу будет принята.

Ответы [ 3 ]

1 голос
/ 11 июня 2019

Существует несколько способов хранения токенов. Обычно приложения нигде не хранят токен доступа, но они хранят токен обновления в постоянном хранилище.

Давайте посмотрим, что вам нужно хранить в Интернете и API.

Сначала пользователь запросит вход в веб-приложение с учетными данными, веб-приложение передаст этот запрос в проект API, который взаимодействует с БД.

Теперь api сгенерирует токены доступа и токен обновления и токен обновления сохранения в эту БД. Веб-API затем необходимо хранить токен доступа и обновлять токен во временном хранилище, таком как cookie или сеанс.

Когда срок действия токена истек; вам необходимо вызвать новые токены, которые обновят предыдущий токен обновления в БД.

TL; DR

Обновить токен - в БД

Доступ к токену и обновление токена - сетевое временное хранилище

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

У вас есть различные варианты (безопасный файл cookie только для http, локальное хранилище, хранилище сеансов и т. Д.).

В самом простом сценарии вы можете сохранить его в файле cookie, чтобы он отправлялся вместе с каждым запросом:

  • Файл cookie всегда должен иметь флаг HttpOnly, чтобы предотвратитьXSS-атаки в браузере.
  • Файл cookie также должен использовать флаг Secure в производстве, чтобы гарантировать, что файл cookie отправляется только по HTTPS.
  • Защита ваших форм от атак CSRF (путемнапример, с помощью функций AntiForgery ASP.NET Core).
0 голосов
/ 11 июня 2019

Выполните вызов от пользовательского интерфейса к контроллеру сервера (контроллера) веб-приложений, который, в свою очередь, выполняет вызов для получения токена от API.получите токен из ответа API и сохраните его в cookie.

ваш контроллер должен выглядеть примерно так

var option = new CookieOptions
{
    Expires = DateTime.Now.AddMinutes(response.ExpiresIn)
};

if (!string.IsNullOrEmpty(domain))
{
                option.Domain = domain;
}

Response.Cookies.Append({cookiename}, response.AccessToken, option);
...