Настройте параметры проверки подлинности 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();
}
В информационной системе Интернета существует большая гибкость; это довольно мощный. Документация через там ссылки также довольно глубоко. Примеры совершенно неуместны, чтобы адаптироваться к вашему конкретному использованию или, по крайней мере, обеспечить уровень понимания, чтобы заставить его делать то, что вы хотите.
Надеюсь, что помощь, эти примеры пришли отсюда: