У нас есть старое приложение webforms, которое работает большую часть нашего бизнеса, и мы находимся в процессе переписывания этого в ASP.NET Core по ряду причин.Одна из вещей, которые мы хотели бы сделать, это перейти от нашей собственной реализации безопасности и вместо этого полагаться на ASP.NET Identity.Наша основная проблема заключается в том, что у нас есть десятки тысяч учетных записей, в каждой из которых назначено 1 или более пользователей.Каждая учетная запись имеет одинаковые роли, доступные для нее (AccountOwner, SupportAdmin, BillingAdmin и т. Д.).Это определено в нашей таблице ролей следующим образом:
RoleID (AutoInc), AccountID, RoleName, RoleDescription
Если роль доступна для ВСЕХ учетных записей, мы вводим ее следующим образом:
0, AccountAdmin, администратор аккаунта
0, SupportAdmin, администратор поддержки
0, BillingAdmin, администратор биллинга
... И так далее, у нас есть около10 ролей, которые мы назначаем таким образом и которые доступны для каждого аккаунта, который у нас есть.У нас есть несколько других учетных записей (в основном для наших сотрудников), которые выполняют более конкретные роли, например:
1500, Employee, CompanyEmployee
В настоящее время мы вызываем процедуру, подобную этой:
If (user.isinrole (UserID, AccountID, "AccountOwner")) {} ...
Из того, что я могу сказать, что-то подобное не доступно в ASP.NET Identityзатрудняет управление несколькими учетными записями.
Похоже, что это будет довольно распространенным явлением: кто-нибудь сделал это успешно (и безопасно), и если да, то как?Нам лучше использовать ASP.Net Identity для аутентификации и наши собственные процедуры для авторизации?Мы пришли к следующему:
1) Расширение классов Identity для включения того, что мы хотим, и это нам не очень нравится, так как теперь мы снова полагаемся на наш пользовательский код по сравнению с усиленнымсистема аутентификации
или
2) Каждый раз, когда создается учетная запись, создавайте 10-15 новых ролей, например: 1242_AccountOwner и т. д. (роль AccountOwner для accountID 1242).
Любой вклад будет принята с благодарностью.