У меня есть приложение .NET, распространяемое через ClickOnce
. Безопасность внутри приложения реализована через метод WindowsPrincipal.IsInRole(GroupName)
с использованием набора групп в качестве ресурсов. Эта структура хорошо работает для нас для пользователей в том же домене, что и группы. К сожалению, теперь у нас есть пользователи, которым необходимо использовать приложение, работающее на машинах и использующее учетные записи пользователей в другом домене, которому доверяет наш домен, но который не находится в том же лесу.
Кажется, что IsInRole()
запрашивает билет AD на локальном компьютере для членства в группе. К сожалению, этот билет содержит только локальные группы домена для домена машины, а также глобальные и универсальные группы других доверенных доменов, наши группы являются локальными группами домена в первом домене. Ситуация с ловушкой-22 возникает из-за того, что AD не допускает внешних субъектов безопасности ни в глобальных, ни в универсальных группах, и поэтому, хотя пользователи второго домена могут запрашивать ее, они не могут быть ее членами (что делает ее немного бессмысленной! )
Объясню: есть два домена: DOM1 и DOM2 с настройкой доверия между ними, но они не находятся в одном лесу.
DOM1\User1
DOM2\User2
два пользователя.
Я хотел бы поместить User1
и User2
в одну группу, которая видна обоим пользователям и может содержать их обоих.
Единственный способ, который я могу в настоящее время увидеть, это следующий (где {} обозначает членов групп, DL = локальный домен и GLO = глобальная группа.)
Создайте две глобальные группы по одной в каждом домене:
DOM1\GLOGroup1 : {DOM1\User1}
DOM2\GLOGroup1 : {DOM2\User2}
и две локальные группы домена, содержащие две глобальные группы:
DOM1\DLGroup1 : {DOM1\GLOGroup1, DOM2\GLOGroup1}
DOM2\DLGroup1 : {DOM1\GLOGroup1, DOM2\GLOGroup1}
Но на самом деле это неприемлемо, так как на самом деле у нас есть более двух доменов и около 70 групп для администрирования, включая иерархию групп, и у нас нет большого прямого контроля над администрированием групп в других доменах.
Мы еще не обдумывали подход с использованием LDAP, но из того немногого, что я прочитал, я полагаю, что это обычно не рекомендуется для этой цели?