Лучшая практика для разделения сайта ASP.Net MVC с AD из разных групп AD? - PullRequest
2 голосов
/ 30 октября 2019

У меня есть сайт ASP.net MVC, который проходит аутентификацию в Azure Active Directory. У меня есть пользователи в группах в AD, и мне нужно иметь возможность отображать различные элементы и страницы панели навигации в зависимости от того, в какую группу входит пользователь.

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

@if (Helpers.AuthenticationHelper.HasPermissions(User, "IT") == true)
{
    <span>User has access to IT</span>
}
else
{
    <span>User has no access to IT</span>
}

@if (Helpers.AuthenticationHelper.HasPermissions(User, "Accounting") == true)
{
    <span>User has access to Accounting</span>
}
else
{
    <span>User has no access to Accounting</span>
}

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

Это безопасный способ сделать это или есть недостатки безопасности? Может ли кто-нибудь достаточно умный найти способ обойти это? Я должен убедиться, что ни при каких обстоятельствах пользователи в одной группе не смогут увидеть материалы, предназначенные для другой группы. Благодарю. Ценю любые советы.

РЕДАКТИРОВАТЬ: Добавление кода контроллера по запросу.

public ActionResult Dashboard()
    {
        using (Data.WebAppsCoreContext _context = new Data.WebAppsCoreContext())
        {
            var securityRepo = new SecurityRepository(_context);
            var metricBool = securityRepo.Metrics(AuthenticationHelper.GetGroups(User), "Metrics");

            if (metricBool == true)
            {
                //return normal view
                return View();
            }
            else
            {
                //return alternate view
                return View("/Something/Something/");
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...