Динамическая авторизация групп пользователей в .NET Core - PullRequest
0 голосов
/ 29 марта 2019

Я хотел бы знать, есть ли у кого-нибудь предложения о том, как динамически создавать группы пользователей, заполнять эти группы пользователями, а затем использовать логику авторизации, чтобы ограничить доступ к представлениям на основе принадлежности к группе, которая также определяется во время выполнения.Извините за широту этого вопроса, но, хотя у меня есть небольшой опыт работы с .NET на настольном компьютере, у меня очень мало опыта в веб-инфраструктурах .NET Normal / Core MVC.

Перечень спецификаций

Задачи авторизации, необходимые во время выполнения

  • Создание групп
  • Назначение пользователей для групп
  • Ограничение доступа к представлениям для определенных групп

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

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

В мире аутентификации, по моему опыту, группы предназначены для защиты данных или даже безопасности на уровне строк.Так что больше информации нужно здесь.но это абстракция, каждое приложение может решить, что на самом деле означает этот термин в коде.

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

Как их назначить?это действительно зависит от вашего приложения ... может быть много вариантов использования.

  1. ваш пользователь присоединяется сам, вам нужно сохранить его в базе данных с политикой.
  2. ваш пользователь создан кем-то еще в приложении, вы можете присоединить его к политике или поддержать его в пользовательском интерфейсе.
  3. используйте, чтобы получить больше доступа по прошествии времени ... опять же, вы должны решить, будет ли это автоматически или нет ...

вот пример, как ограничить вручную:

public class ContentController : Controller
{
  private IAuthorizationService _authorizationService;
  public ContentController (IAuthorizationService authorizationService)
  {
    _authorizationService = authorizationService;
  }

  public async Task<IActionResult> Save(Article article)
  {    var allowed = await _authorizationService.AuthorizeAsync(User, "ContentsEditor"));
    if (!allowed)
      throw new SomeAuthException();

    // ok, goot to go....
    ...
  }
}

у вас есть более «инфраструктурные» способы реализации этого, но это только пример

Пожалуйста, ознакомьтесь с рекомендациями по использованию политики: https://www.jerriepelser.com/blog/creating-dynamic-authorization-policies-aspnet-core/

0 голосов
/ 01 апреля 2019

Вам нужна динамическая авторизация, известная как управление доступом на основе атрибутов ().С ABAC вы определяете политики, которые используют атрибуты пользователя, действия и ресурса.Есть множество систем, которые делают это:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...