UserManager: GenerateEmailConfirmationTokenAsync () и ConfirmEmailAsync () в разных веб-приложениях - PullRequest
0 голосов
/ 29 января 2019

У меня есть 2 веб-приложения ASP MVC Core (ссылка Microsoft.AspNetCore.App, Version 2.1.1).Оба работают локально в Visual Studio на моем компьютере.

  1. Если я вызываю внутри 1-го веб-приложения
    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
и затем во втором веб-приложении
    var result = await _userManager.ConfirmEmailAsync(user, code);

Я получил результат "Invalid token.".


Я прочитал ASP.NET Core2.0 - удостоверение ASP.NET - ошибка неверного токена , но моя проблема в другом.Он также не работает локально!

(Полагаю, установка machineKey не поможет, поскольку оба приложения работают на моем локальном компьютере. И даже если у меня нет web.config локально.)

1 Ответ

0 голосов
/ 29 января 2019

Токен сохраняется в базе данных, поэтому все, что вам нужно, это уметь правильно расшифровать его на другой стороне.Для этого, если оба приложения являются ASP.NET Core, вам нужно только настроить поставщиков защиты данных для обоих приложений, чтобы они подключались к одному внешнему хранилищу и использовали одно и то же имя приложения.Внешним хранилищем может быть сетевое расположение, подключенный диск, хранилище ключей Azure и т. Д. Вам следует просмотреть полную документацию , но по существу:

services.AddDataProtection()
    .SetApplicationName("shared app name")
    .PersistKeysToFileSystem(new DirectoryInfo(@"\\server\share\directory\"));

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

services.AddDataProtection()
    .DisableAutomaticKeyGeneration();

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

...