ASP.NET Core 2.x Identity - несколько «зон» - PullRequest
0 голосов
/ 24 июня 2019

У нас есть старое приложение 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).

Любой вклад будет принята с благодарностью.

...