Токен пароля сброса личности ASP.NET Core 5 случайно недействителенC#

Место общения программистов C#
Anonymous
Токен пароля сброса личности ASP.NET Core 5 случайно недействителен

Сообщение Anonymous »

Использование IdentityServer4 + ASP.NET Core Identity с .NET 5.
Однако наша конечная точка сброса пароля выдает ошибки, если я повторно отправлю запрос несколько раз (тот же самый запрос), он снова работает.
Вот краткое описание нашего процесса: после проверки пользователя я генерирую токен сброса пароля следующим образом:

Код: Выделить всё

var token = await _userManager.GeneratePasswordResetTokenAsync(user);
Затем я передаю этот токен во внешний интерфейс, который отправляет этот токен в конечную точку сброса пароля, где этот токен проверяется:

Код: Выделить всё

// removed rest of the code for brevity
if (user == null)
{
throw new CustomException(UserNotFoundException);
}

var isValid = await userManager.VerifyUserTokenAsync(user, userManager.Options.Tokens.PasswordResetTokenProvider, "ResetPassword", token);

if (!isValid)
{
throw new CustomException(InvalidTokenException);
}

return isValid;
Метод VerifyUserTokenAsync большую часть времени возвращает false, но после нескольких повторов (от 2 до 10 попыток) он в конечном итоге работает.
Эта проблема возникает только в нашей производственной среде; в наших средах тестирования такой проблемы нет. Кажется, проблема связана только с PasswordResetTokenProvider, поскольку наш пользовательский поставщик OTP работает корректно и без сбоев.
Шаги, которые я предпринял на данный момент:
< ul>
[*]Проверено, что токен, сгенерированный функцией GeneratePasswordResetTokenAsync, и токен, отправленный в запросе, идентичны.
[*]Убедился, что токен отправляется в тексте запроса во избежание несоответствий кодирования/декодирования.
[*]Подтверждено, что SecurityStamp не имеет значения NULL во время процесса.
[*]Проверено, что код не был изменен сделано до возникновения этой проблемы (она начала происходить недавно без каких-либо видимых изменений).

Есть идеи, что может быть причиной этого? в этот момент я чувствую себя потерянным и не знаю, где искать. У меня есть одно подозрение: может быть запущено несколько экземпляров нашего приложения для идентификации, и это может быть причиной проблемы (хотя я не знаю, вызовет ли это вообще проблему). При необходимости я буду рад предоставить дополнительный код.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/787 ... ly-invalid

Вернуться в «C#»