Программно включить проверку подлинности форм в IIS 7.0 - PullRequest
1 голос
/ 27 сентября 2010

В настоящее время я использую System.DirectoryServices.DirectoryEntry и свойство 'AuthFlags', чтобы установить анонимный доступ к виртуальной сети.Чтобы включить анонимный доступ, я даю ему значение 1. Какое значение мне нужно установить, чтобы включить аутентификацию форм?

У меня в голове есть идея, что, возможно, это устанавливается только через Интернет.конфиг?

Ответы [ 3 ]

3 голосов
/ 28 сентября 2010

Я заметил, что вы используете System.DirectoryServices для настройки этих функций в IIS7 (в соответствии с вашими тегами).

В IIS7 вы можете настроить обе эти настройки, используя вместо этого библиотеку Microsoft.Web.Administration:

Установка типа аутентификации (заменяет AuthFlags):

Конфигурация IIS 7: аутентификация безопасности <authentication>

Чтобы настроить проверку подлинности с помощью форм:

using Microsoft.Web.Administration;
   ...
long iisNumber = 1234;
using(ServerManager serverManager = new ServerManager())
{
  Site site = serverManager.Sites.Where(s => s.Id == iisNumber).Single();

  Configuration config = serverManager.GetWebConfiguration(site.Name);
  ConfigurationSection authenticationSection = 
               config.GetSection("system.web/authentication");
  authenticationSection.SetAttributeValue("mode", "Forms");

  ConfigurationSection authorizationSection = 
               config.GetSection("system.web/authorization");
  ConfigurationElementCollection addOrDenyCollection = 
               authorizationSection.GetCollection();
  ConfigurationElement allowElement = addOrDenyCollection.CreateElement("allow");
  allowElement["users"] = "?";

  addOrDenyCollection.Add(allowElement);
  serverManager.CommitChanges();
}

Приведенный выше код создаст новый файл web.config в корне веб-сайта или изменит существующий.

Чтобы использовать Microsoft.Web.Administration, добавьте ссылку на C:\Windows\System32\InetSrv\Microsoft.Web.Administration.dll.

2 голосов
/ 16 февраля 2011

Я бы порекомендовал немного другой подход, если бы поддерживал IIS 7 или 7.5.Концепции похожи, но не акцентируют внимание на ASP.Netв локальном приложении web.config в торговле для акцентирования внимания на IISв сервере applicationHost.config.

Начните внизу этой ссылки и прокрутите вверх ... http://www.iis.net/ConfigReference/system.webServer/security/authentication/windowsAuthentication

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim anonymousAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Default Web Site/App1")
      anonymousAuthenticationSection("enabled") = False

      Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site/App1")
      windowsAuthenticationSection("enabled") = True

      serverManager.CommitChanges()
   End Sub
End Module

Основной подход заключается в внесении изменений в IISДиспетчер и наблюдайте, как изменяется конфигурация хоста приложения для этого приложения.Затем вы реплицируете эти изменения, соответственно управляя новой сборкой Microsoft.Web.Administration.

Расположение:% systemroot% \ system32 \ inetsrv \ config \ applicationHost.config

На что обратить внимание:

<location path="Default Web Site/App1">
    <system.webServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="true" />
                <windowsAuthentication enabled="true" />
            </authentication>
        </security>
    </system.webServer>
</location>
1 голос
/ 22 апреля 2014

Источник

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {

   private static void Main() {

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

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

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

         serverManager.CommitChanges();
      }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...