Я работаю над сервисом WCF (не доступен извне), который будет аутентифицировать пользователей Active Directory в двух доменах для пользователей нашего приложения .NET 2.0 WinForm. Часть аутентификации в основном работает, но у меня возникают некоторые проблемы с изменением Active Directory. Вот основные сведения о ситуации и требованиях.Служба проверки подлинности Active Directory WCF для нескольких доменов - как?
- Некоторые внешние пользователи нашего приложения войдут на сервер Citrix в другом домене нашей DMZ. Это должен быть единственный раз, когда они должны ввести свои учетные данные. Таким образом, аутентифицированный пользователь в этом домене должен быть принят как уже прошедший проверку подлинность, а права приложения загружаются на основе идентификатора пользователя.
- Между доменом DMZ и нашим внутренним доменом существует одностороннее доверительное отношение.
- Большинство внешних пользователей устанавливают приложение на своих компьютерах. Мы используем удаленное соединение .NET для подключения к нашим серверам из приложения. Аутентификация - это идентификатор пользователя/пароль посредством удаленного доступа к информации, хранящейся в SQL Server, в нашем домене.
- Внутренние пользователи, находясь в нашем домене, будут в аналогичной ситуации. Они запустит приложение и не будут вводить какие-либо учетные данные при условии, что они вошли в систему.
- Все пользователи - Active Directory или нет - все еще настроены в наших таблицах, в которых хранится наша информация об управлении правами. В таблице пользователя есть флаг, указывающий, является ли пользователь AD или нет, и поля, указывающие их домен и идентификатор пользователя AD (если они отличаются от их исходного).
- Если пользователи настроены в Active Directory, либо во внешнем домене, либо во внутреннем домене, если они запускают приложение, установленное на компьютере, который в настоящее время не находится в домене (то есть, с ноутбука на дороге), они будут аутентифицирован в Active Directory. Удаленные объекты, которые обрабатывают аутентификацию в # 2, подключаются к службе WCF для получения аутентификации.
- То же самое относится к пользователям нашего веб-сайта (который использует те же учетные данные). Если они отмечены как пользователи Active Directory, они аутентифицируются против него, а не против нашей обычной системы.
- Некоторые внутренние пользователи, которые имеют правильные права, должны иметь возможность настраивать пользователей в Active Directory, изменять их, разблокировать и включать/отключать - только во внешнем домене.
Основные вопросы, у меня есть следующие:
- Какой домен, что служба WCF должна быть: внешний или внутренний?
- Какой пользователь должен работать под этой службой, чтобы иметь возможность выполнить все вышеперечисленное, т. Е. External \ SVC-ADAuthentication, Internal \ SVC-ADAuthentication, что-то еще?
Из моего тестирования:
- Когда я запускаю службу на внешнем в качестве внешнего \ SVC-ADAuthentication, я могу изменить информацию AD и аутентификация против внешнего домена. Ошибка аутентификации во внутреннем домене завершается неудачей: «Реферал был возвращен с сервера»
- Внешние как внутренние \ SVC-ADAuthentication: я могу пройти аутентификацию в отношении обоих доменов, но я не могу изменять пользователей в внешнем домене.
- Внутренний как внутренний \ SVC-ADAuthentication: я могу аутентифицироваться только во внутреннем домене.
- Внутренний как внешний \ SVC-ADAuthentication: не будет работать (я предполагаю из-за односторонних отношений доверия).
Почему бы не использовать WIF? http://msdn.microsoft.com/en-us/magazine/ee335707.aspx –
Я не очень хорошо знаком с этим, но похоже, что потребуется дополнительный сервер для размещения службы токенов безопасности, а также требуется .NET 3.5. Наше приложение все еще является .NET 2.0, что означает, что я должен использовать basicHttpBinding для подключения от удаленных объектов данных к службе WCF. Также похоже, что для правильного осуществления этого потребовалось бы значительную переработку наших подпрограмм аутентификации/безопасности, что невозможно сейчас. –