Настройте делегирование Kerberos автоматически - PullRequest
1 голос
/ 03 декабря 2010

У меня есть веб-приложение, которое использует некоторые внутренние серверы (UNC, HTTP и SQL).Чтобы это работало, мне нужно настроить ServicePrincipalNames для учетной записи, на которой запущен IIS AppPool, а затем разрешить делегирование kerberos бэкэнд-службам.

Я знаю, как настроить это на вкладке «Делегирование» пользователей и компьютеров AD.tool.

Однако приложение будет развернуто в ряде сред Active Directory.Конфигурирование делегирования вручную оказалось подверженным ошибкам, а отладка проблем, приводящих к неправильной конфигурации, занимает много времени.Я хотел бы создать установочный сценарий или программу, которая может сделать это для меня.

Кто-нибудь знает, как создать сценарий или программно установить ограниченное делегирование в AD?

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

1 Ответ

3 голосов
/ 10 декабря 2010

ОК, после долгих поисков в интернете и некоторого тестирования у меня есть путь вперед.

Следующий код - c #. Настройка имени участника-службы для пользователя или компьютера может быть достигнута с помощью утилиты setspn.

В качестве альтернативы следующий код C # может сделать то же самое:

DirectoryEntry de = new DirectoryEntry("LDAP://"+usersDN);

if (!de.Properties["servicePrincipalName"].Contains(spnString))
{
    de.Properties["servicePrincipalName"].Add(spnString);
    de.CommitChanges();
}

Чтобы установить ограниченное делегирование:

if (!de.Properties["msDS-AllowedToDelegateTo"].Contains(backendSpnString))
{
    de.Properties["msDS-AllowedToDelegateTo"].Add(backendSpnString);
    de.CommitChanges();
}

Если у пользователя включено неограниченное делегирование, вам может потребоваться отключить его перед включением ограниченного - но я не полностью протестировал этот сценарий.

...