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

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

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


person Journey    schedule 29.03.2012    source источник


Ответы (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();
}

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

Надеемся, что это поможет, эти примеры взяты из здесь:

person Greg    schedule 13.12.2012