2009-11-11 5 views
0

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

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

Основные вопросы, у меня есть следующие:

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

Из моего тестирования:

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

Почему бы не использовать WIF? http://msdn.microsoft.com/en-us/magazine/ee335707.aspx –

+0

Я не очень хорошо знаком с этим, но похоже, что потребуется дополнительный сервер для размещения службы токенов безопасности, а также требуется .NET 3.5. Наше приложение все еще является .NET 2.0, что означает, что я должен использовать basicHttpBinding для подключения от удаленных объектов данных к службе WCF. Также похоже, что для правильного осуществления этого потребовалось бы значительную переработку наших подпрограмм аутентификации/безопасности, что невозможно сейчас. –

ответ

0

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

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

Таким образом, вам нужно создать доверие друг к другу между внутренним и внешним доменом.

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

+0

Это в основном то, что у меня есть. У нас есть одностороннее доверие, настроенное между внутренними и внешними доменами. У меня был самый успешный запуск службы во внешнем домене. Однако 1) Если я запустил службу под учетной записью внешнего домена во внешнем домене, я не могу выполнить проверку подлинности во внутреннем домене 2) Если я запустил службу под учетной записью внутреннего домена во внешнем домене, я не могу изменить Active Каталог во внешнем домене –

Смежные вопросы