Служба WCF для проверки подлинности Active Directory для нескольких доменов - как? - PullRequest
0 голосов
/ 11 ноября 2009

Я работаю над службой WCF (не доступной извне), которая будет проверять подлинность пользователей в Active Directory в двух доменах для пользователей нашего приложения WinNET для .NET 2.0. Часть проверки подлинности в основном работает, но у меня есть некоторые проблемы при изменении Active Directory. Вот основные сведения о ситуации и требованиях.

  1. Некоторые внешние пользователи нашего приложения будут входить на сервер Citrix в другом домене нашей демилитаризованной зоны. Это должен быть единственный раз, когда они должны ввести свои полномочия. Таким образом, аутентифицированный пользователь в этом домене должен быть принят как уже аутентифицированный, а права приложения загружаются на основе идентификатора пользователя.
  2. Между доменом DMZ и нашим внутренним доменом установлены односторонние доверительные отношения.
  3. Большинство внешних пользователей устанавливают приложение на свои компьютеры. Мы используем .NET Remoting для подключения к нашим серверам из приложения. Аутентификация - это идентификатор пользователя / пароль посредством удаленного взаимодействия с информацией, хранящейся в SQL Server в нашем домене.
  4. Внутренние пользователи, находящиеся в нашем домене, будут в аналогичной ситуации. Они запустят приложение и не будут нуждаться в вводе учетных данных, при условии, что они вошли в систему.
  5. Все пользователи - Active Directory или нет - все еще настроены в наших таблицах, где хранится наша информация об управлении правами. В пользовательской таблице есть флаг, указывающий, является ли пользователь AD, и поля, указывающие его домен и идентификатор пользователя AD (если он отличается от исходного).
  6. Если пользователи настроены в Active Directory, либо во внешнем домене, либо во внутреннем домене, если они запускают приложение, установленное на компьютере, который в данный момент не находится в домене (то есть на ноутбуке в дороге), они будут прошел проверку подлинности в Active Directory. Удаленные объекты, которые обрабатывают аутентификацию в # 2, подключаются к службе WCF для получения аутентификации.
  7. То же самое относится к пользователям нашего веб-сайта (который использует те же учетные данные). Если они помечены как пользователи Active Directory, они проходят проверку подлинности на этом уровне, а не на нашей обычной системе.
  8. Некоторые внутренние пользователи, которые имеют правильные права, должны иметь возможность настраивать пользователей в Active Directory, изменять их, разблокировать и включать / отключать их - только во внешнем домене.

Основные вопросы, которые у меня есть:

  1. В каком домене должна быть служба WCF: внешняя или внутренняя?
  2. Под каким пользователем должен работать этот сервис, чтобы выполнить все вышеперечисленное, т. Е. Внешняя \ SVC-ADAuthentication, Внутренняя \ SVC-ADAuthentication, что-то еще?

Из моих испытаний:

  1. Когда я запускаю службу на External как External \ SVC-ADAuthentication, я могу изменить информацию AD и выполнить аутентификацию на внешнем домене. Аутентификация на внутреннем домене завершается с ошибкой «Реферал был возвращен с сервера»
  2. External as Internal \ SVC-ADAuthentication: я могу аутентифицироваться на обоих доменах, но не могу изменять пользователей на внешнем домене.
  3. Внутренний как внутренний \ SVC-ADAuthentication: я могу аутентифицироваться только на внутреннем домене.
  4. Внутренняя как Внешняя \ SVC-ADAuthentication: не запускается (я полагаю, из-за односторонних доверительных отношений).

1 Ответ

0 голосов
/ 11 ноября 2009

Если вы посмотрите на проблему с принципиальной точки зрения.

  • Вы не хотите, чтобы внешний домен мог иметь доступ к внутреннему домену.
  • Это нормально для внутреннего домена для доступа к внешнему домену.

Следовательно, вам необходимо создать одностороннее доверие между внутренним и внешним доменом.

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

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