Как сделать гибкий вход в систему для поддержки пользовательских БД и 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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