Я пишу утилиту для аудита конфигурации службы WCF. Для правильной передачи учетных данных от клиента через службу WCF обратно в серверную часть SQL учетная запись домена, используемая для запуска службы, должна быть настроена в Active Directory с параметром «Доверять этому пользователю для делегирования» (Свойства -> «Делегирование вкладку ").
Используя С#, как мне получить доступ к настройкам на этой вкладке в Active Directory. Я провел последние 5 часов, пытаясь отследить это в Интернете, и не могу найти.
Вот что я сделал до сих пор:
using (Domain domain = Domain.GetCurrentDomain())
{ Console.WriteLine(домен.Имя);
// get domain "dev" from MSSQLSERVER service account
DirectoryEntry ouDn = new DirectoryEntry("LDAP://CN=Users,dc=dev,dc=mydomain,dc=lcl");
DirectorySearcher search = new DirectorySearcher(ouDn);
// get sAMAccountName "dev.services" from MSSQLSERVER service account
search.Filter = "(sAMAccountName=dev.services)";
search.PropertiesToLoad.Add("displayName");
search.PropertiesToLoad.Add("userAccountControl");
SearchResult result = search.FindOne();
if (result != null)
{
Console.WriteLine(result.Properties["displayName"][0]);
DirectoryEntry entry = result.GetDirectoryEntry();
int userAccountControlFlags = (int)entry.Properties["userAccountControl"].Value;
if ((userAccountControlFlags & (int)UserAccountControl.TRUSTED_FOR_DELEGATION) == (int)UserAccountControl.TRUSTED_FOR_DELEGATION)
Console.WriteLine("TRUSTED_FOR_DELEGATION");
else if ((userAccountControlFlags & (int)UserAccountControl.TRUSTED_TO_AUTH_FOR_DELEGATION) == (int)UserAccountControl.TRUSTED_TO_AUTH_FOR_DELEGATION)
Console.WriteLine("TRUSTED_TO_AUTH_FOR_DELEGATION");
else if ((userAccountControlFlags & (int)UserAccountControl.NOT_DELEGATED) == (int)UserAccountControl.NOT_DELEGATED)
Console.WriteLine("NOT_DELEGATED");
foreach (PropertyValueCollection pvc in entry.Properties)
{
Console.WriteLine(pvc.PropertyName);
for (int i = 0; i < pvc.Count; i++)
{
Console.WriteLine("\t{0}", pvc[i]);
}
}
}
}
«userAccountControl» не кажется правильным свойством. Я думаю, что это связано с разделом «Параметры учетной записи» на вкладке «Учетная запись», что не то, что мы ищем, но это самое близкое, что я получил до сих пор.
Обоснование всего этого таково: у нас нет разрешения на настройку сервиса в QA или в продакшене, поэтому вместе с нашими письменными инструкциями (которые, как известно, соблюдаются лишь частично) я создаю инструмент, который будет проверять настройку (WCF и SQL), чтобы определить правильность установки. Это позволит человеку, развертывающему службу, запустить эту утилиту и убедиться, что все настроено правильно, что сэкономит нам часы головной боли и сократит время простоя во время развертывания.