Настройте параметры проверки подлинности IIS с помощью класса ServerManager

Я использую класс ServerManager (из Microsoft.Web.Administration) для создания приложений на сервере под управлением IIS 7. Я хочу настроить, использует ли приложение анонимную аутентификацию или Windows-аутентификацию на основе приложения, поэтому я не могу просто попросите ИТ изменить настройки на корневом сайте. Содержимое приложения принадлежит третьей стороне, поэтому я не могу изменять файл web.config внутри приложения.

Класс Application не предоставляет никаких полезных свойств, но, возможно, я мог бы что-то сделать, используя метод GetApplicationHostConfiguration ServerManager?

1 ответ

Похоже, вы надеетесь изменить конфигурацию информационной системы Интернета для сайта; если это правильно, то что-то вроде этого должно работать:

using (ServerManager serverManager = new ServerManager())
{
    Configuration config = serverManager.GetWebConfiguration("Contoso");
    ConfigurationSection authorizationSection = config.GetSection("system.webServer/security/authorization");
    ConfigurationElementCollection authorizationCollection = authorizationSection.GetCollection();

    ConfigurationElement addElement = authorizationCollection.CreateElement("add");
    addElement["accessType"] = @"Allow";
    addElement["roles"] = @"administrators";
    authorizationCollection.Add(addElement);

    serverManager.CommitChanges();
 }

Приведенный выше код позволит вам создать правило авторизации, которое позволит конкретному пользователю в группе получить доступ к определенному сайту. В этом случае сайт Contoso.

Тогда это отключит анонимную аутентификацию для сайта; затем включите базовую аутентификацию и аутентификацию Windows для сайта:

using(ServerManager serverManager = new ServerManager()) 
{ 
    Configuration config = serverManager.GetApplicationHostConfiguration();

    ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso");
    anonymousAuthenticationSection["enabled"] = false;

    ConfigurationSection basicAuthenticationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso");
    basicAuthenticationSection["enabled"] = true;

    ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso");
    windowsAuthenticationSection["enabled"] = true;

    serverManager.CommitChanges();
}

Или вы можете просто добавить учетную запись пользователя IIS Manager, если хотите; которые вы можете установить с определенными разрешениями для манипулирования и управления этими другими приложениями.

using (ServerManager serverManager = new ServerManager())
{
    Configuration config = serverManager.GetAdministrationConfiguration();

    ConfigurationSection authenticationSection = config.GetSection("system.webServer/management/authentication");
    ConfigurationElementCollection credentialsCollection = authenticationSection.GetCollection("credentials");
    ConfigurationElement addElement = credentialsCollection.CreateElement("add");
    addElement["name"] = @"ContosoUser";
    addElement["password"] = @"P@ssw0rd";
    addElement["enabled"] = true;
    credentialsCollection.Add(addElement);

    serverManager.CommitChanges();
}

В информационной системе Интернета существует большая гибкость; это довольно мощный. Документация через там ссылки также довольно глубоко. Примеры совершенно неуместны, чтобы адаптироваться к вашему конкретному использованию или, по крайней мере, обеспечить уровень понимания, чтобы заставить его делать то, что вы хотите.

Надеюсь, что помощь, эти примеры пришли отсюда:

Другие вопросы по тегам