asp. net core windows аутентификация + авторизация собственной базы данных в медленной сети - PullRequest
0 голосов
/ 04 апреля 2020

СИТУАЦИЯ

У меня есть база данных, в которой у меня есть имена пользователей и связанные с ними разрешения, а также код, который работает с ним. Думайте об этом как о чёрном ящике, который дает мне права пользователя как Enumerable из enum значений, когда я предоставляю имя пользователя. Мне нужно его использовать.

У меня также есть ASP. NET Core 3.1 MVC веб-приложение , которое должно использовать Windows аутентификация и Настраиваемая авторизация на основе этих разрешений.

Я хочу хранить эти разрешения в течение минуты (или десяти), потому что сеть ненадежна, и запрос разрешений пользователя каждый раз занимает много времени и они не так часто меняются. Я ничего не могу поделать со скоростью, мне приходится с ней работать.

У меня есть реализации AuthorizeAttribute, в которых я указываю список разрешений (значений перечисления), которые пользователь должен получить для доступа к действие в контроллере.

Чтобы быть более точным c У меня есть более старая . net framework asp. net MVC application где я go вокруг эту проблему, имея свой собственный принципал с моим списком разрешений и сохраняя этот принципал в куке ie.

Я медленно изучаю ядро ​​asp. net, и когда я начал читать об авторизации и аутентификации в нем, этого было достаточно, чтобы заставить мою голову кружиться от информационной перегрузки.

РЕЗЮМЕ

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

То, что у меня есть, вероятно, не будет работать для меня в приложении ASP. NET core MVC и не может найти жизнеспособный вариант, прежде чем закончить загружен множеством доступных опций.

Мне нужен пу sh в правильном направлении, написанном простым языком (для идиота), в направлении, чтобы посмотреть, чтобы мой работа над требованиями.

СОВРЕМЕННОЕ (НЕ ИДЕАЛЬНОЕ) РЕШЕНИЕ В ASP. NET РАМКА MVC

Пример того, как в настоящее время как-то работает. net framework asp. net mvc, но, вероятно, далеко от идеала:

  • в global.asax переопределить WindowsAuthentication_onAuthenticate, где я проверяю, есть ли повар ie с данные пользователя и пользователь аутентифицирован.

    Если пользователь прошел проверку подлинности, но повара нет ie, создайте принципала (содержащего разрешения пользователя), сериализуйте и зашифруйте его до FormsAuthenticationTicket для повара ie.

  • в Application_PostAuthenticateRequest получить данные из зашифрованного кода ie и установить их в HttpContext.Current.User в качестве принципала.

  • Тогда атрибут авторизации просто собираюсь взять массив указанных разрешений и проверить HttpContext.Current.User, есть ли у пользователя их.

Может кто-нибудь порекомендовать мне, как сузить мой поиск для жизнеспособного решения ( или жизнеспособное решение)?

...