Аутентификация Blazor - Refre sh токен для токена JWT - PullRequest
0 голосов
/ 26 марта 2020

Я основал свою аутентификацию на этом git хаб-репозитории.

https://github.com/chrissainty/AuthenticationWithClientSideBlazor

Мне просто интересно, есть ли какие-либо предложения по как реализовать токен refre sh, так как в настоящее время все, что я пробовал, потерпело неудачу.

Когда блазор перепроверяет аутентификацию, потому что все, что я собираю, это проверки на нагрузку, поэтому, когда мой токен истекает, пока все еще вошел в систему, я получить несанкционированные ошибки http. Я не хочу выходить из системы для повторной аутентификации.

Это приложение для веб-сборок Blazor.

Любой совет будет высоко оценен!

1 Ответ

1 голос
/ 29 марта 2020

Общая идея такова:

Сервер:

  1. Генерировать токен refre sh при входе в систему. Вы можете выбрать любой метод, какой захотите. Для простоты просто сгенерируйте случайный набор символов, например:
private string GenerateRefreshToken()
{
    Random random = new Random();
    byte[] baseBytes = new byte[128];
    random.NextBytes(baseBytes);
    return Convert.ToBase64String(baseBytes);
}
Сохраните его с датой истечения срока действия (например, 2 недели) и ссылкой на пользователя Разверните LoginController.Login, чтобы вернуть оба токена вместо одного Добавить новую конечную точку в LoginController (или расширить существующую). ) - LoginUsingRefreshToken

Здесь вы снова авторизуете своего пользователя, используя refre sh token. Поскольку вы сохранили токен refre sh, вы точно знаете, какой пользователь хочет войти снова. Продлить (или нет, выберите подход) дату истечения срока действия данного конкретного refre sh токена.


Клиент:

  1. Store refre sh token, как вы сохранили " обычный токен
 await _localStorage.SetItemAsync("refreshToken", loginResult.RefreshToken);

Проверьте, не истек ли срок действия обычного токена. Вы можете сделать это разными способами:

Десериализовать токен перед каждым запросом и проверить дату истечения. Действуйте динамично: когда вы получаете 401 от сервера Установите таймер для повторного входа до истечения срока действия токена Или выберите что-то еще

Выполните повторную регистрацию, используя токен refre sh и вновь созданную конечную точку

...