Аутентификация MVC Active Directory по организационным подразделениям

Я хочу перезапустить безопасность AD в своем веб-приложении.NET MVC и, по возможности, практически не иметь локальных таблиц безопасности.

Я могу легко добиться этого, используя Authorize тег:

[Authorize(Roles="GoldDigger")]
public ActionResult Go(int companyKey)
{
    var something = GetData(companyKey);
    return something;
}

Однако у меня есть пользователи, которые имеют доступ к нескольким компаниям (Acme, StoreCo и т. Д.) И GoldDiggerв некоторых, но не во всех этих компаниях. Допустим, я создаю контейнер OU Active Directory для каждой компании, поэтому у меня есть следующая структура ролей AD:

  • NTWRK\Acme\GoldDigger
  • NTWRK\StoreCo\GoldDigger
  • NTWRK\PetCo\GoldDigger
  • NTWRK\Megalomart\GoldDigger

Насколько я знаю, я больше не могу использовать Authorize тег, потому что требуемая роль AD определяется значением параметра CompanyKey.

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

if (!AuthenticateAdRoleByCompany(companyKey, "Role Name Here"))
{
    Explode();
    return;
}

0 ответов