Я работаю над IIS (Версия 8.5) на Windows Server 2012 R2. Я пытаюсь активировать аутентификацию Kerberos с помощью C#, добавив поставщика согласования и установив usingAppPoolCredentials = True. Когда я тестирую свой код на других устройствах (Windows 10, IIS 10.0 / Windows Server 2016, IIS 10.0), все в порядке. Согласно документам Microsoft, нет никакой разницы между IIS 8.5 и IIS 10.0 для добавления поставщиков. Я обнаружил файл web.config на моем Windows Server 2012, возможно, этот файл блокирует изменение. Итак, как я могу удалить этот файл или отменить его генерацию с помощью IIS?
У вас есть какое-либо решение или идея? ?
Спасибо
class Program
{
static void Main(string[] args)
{
var iisManager = new ServerManager();
var sites = iisManager.Sites;
var site = sites.CreateElement();
site = sites.Cast<Site>().ToList().Where(siteTmp => siteTmp.Name.Contains("Default")).First();
var siteName = site.Name;
Configuration config = iisManager.GetApplicationHostConfiguration();
ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", siteName);
var providers = windowsAuthenticationSection.GetCollection("providers");
providers.Clear();
var ntlm = providers.CreateElement("add");
ntlm["value"] = "NTLM";
providers.AddAt(0, ntlm);
var negotiate = providers.CreateElement("add");
negotiate["value"] = "Negotiate";
providers.AddAt(0, negotiate);
providers = windowsAuthenticationSection.GetCollection("providers");
windowsAuthenticationSection.SetAttributeValue("useAppPoolCredentials", true);
iisManager.CommitChanges();
}
}
Файл web.config, сгенерированный IIS при редактировании вручную:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<authentication>
<windowsAuthentication>
<providers>
<clear />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
</security>
</system.webServer>
</configuration>