Как сделать гибкий вход в систему для поддержки пользовательских БД и AD — пробовали с помощью SignInManager?C#

Место общения программистов C#
Anonymous
Как сделать гибкий вход в систему для поддержки пользовательских БД и AD — пробовали с помощью SignInManager?

Сообщение Anonymous »

Цель заключалась в том, чтобы обрабатывать входы в систему с помощью SignInManager ASP.NET Core, но пользователи могут поступать из разных источников:
  • Стандартные таблицы удостоверений
  • Существующие базы данных клиентов с определяемыми пользователем структурами и хешированием паролей
  • Внешние системы, такие как Active Directory.
Для этого SignInManager должен иметь возможность гибко работать с несколькими моделями данных и методами аутентификации.
Насколько я понимаю, я могу перезаписать функцию PasswordSignInAsync и затем реализовать ее самостоятельно в случае внешней базы данных клиента или ActiveDirectroy.
Есть ли лучший способ реализовать различные варианты входа в серверное приложение Blazor?
Трудность здесь состоит в том, чтобы разделить аутентификацию и авторизацию.
Если используется база данных, соответствующая схеме SignInManager, SignInManager может использовать ее 1:1 с помощью соответствующие роли. Файл cookie с информацией о пользователе и авторизациях также может быть установлен напрямую.
В коде я проверяю соответствующие авторизации для каждой страницы, чтобы увидеть, разрешено ли пользователю это делать.
Если вход в систему теперь выполняется через внешнюю БД с собственной структурой БД, то аутентификация должна быть реализована сама вручную.
Тогда авторизация должна быть проверена с использованием UserId и моего самоопределяемые таблицы авторизации. Таким образом, я могу снова установить файл cookie, и проверка кода может соответствовать тем же ролям/авторизациям.
Если я работаю с SignInManager, я могу использовать его только в обычном случае, если я сам создаю БД, соответствующую схеме SignInManager. Во всех остальных случаях AD и внешней БД мне приходится самому писать логику вручную.
Так что вопрос в том, есть ли смысл писать логин полностью самому. Тогда я буду более гибким и у меня будет больше возможностей в отношении различных структур БД и разделения авторизации и аутентификации.
Или есть что-то готовое в этом отношении, которое можно использовать?
Подходит ли для этого Keycloak?

Подробнее здесь: https://stackoverflow.com/questions/798 ... igninmanag

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