Как добавить провайдеров на IIS windows Аутентификация C# - PullRequest
0 голосов
/ 16 марта 2020

Я работаю над 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...