使用DirectoryEntry对象设置Web目录属性“AuthNTLM”时,您实际更改了哪些IIS设置?

时间:2010-09-27 09:13:32

标签: c# iis active-directory wix directoryentry

我的任务是将我们的产品安装程序从InstallShield迁移到WiX。

要部署Web应用程序,以前的开发人员在InstallShield中使用自定义操作(用C#编写)。在Wix中,这不再是必需的,因为wix支持IIS部署。

无论如何,自定义操作中的一个代码使用DirectoryEntry对象来设置Web目录的属性:

DirectoryEntry.Properties["AuthNTLM"][0] = true;

此设置有何功能?我知道它与安全/权限有关,但它在IIS中实际设置了什么设置?它是否启用以下之一:

  • 集成Windows身份验证
  • 摘要式身份验证
  • 基本身份验证
  • .NET Passport身份验证

谢谢!

2 个答案:

答案 0 :(得分:2)

前段时间我提供了一个类似问题的答案:

  

Setting NTAuthenticationProviders at an Application level in IIS 6

AuthFlags(不是AuthNTLM)是一个标志值。您可以在不使用索引器的情况下进行设置,例如:

int MD_AUTH_ANONYMOUS = 1;
int MD_AUTH_BASIC = 2;
int MD_AUTH_NT = 4;

using(DirectoryEntry w3svc = new DirectoryEntry(@"IIS://Localhost/W3SVC"))
{
  using(DirectoryEntry webSite = w3svc.Children.Add(iisNumber, "IIsWebServer"))
  {
    // Configure website settings here...
    ....
    webSite.CommitChanges();

    using(DirectoryEntry siteRoot = webSite.Children.Add("root",
                                        IISSchemaClasses.IIsWebVirtualDir))
    {
      // Configure root application settings...
      ....
      // Only allow Basic and NTLM authentication
      siteRoot.Properties["AuthFlags"].Value = MD_AUTH_BASIC | MD_AUTH_NT 
      siteRoot.CommitChanges();
    }

  }
}

答案 1 :(得分:1)

实际上,InstallShield中可能也不需要它。目前,InstallShield实际上具有更好的内置IIS支持,然后WiX,这种类型的设置可以以声明方式完成,而无需编写自定义操作。另外,收集此信息的InstallShield UI看起来就像IIS MMC Snap-In一样,因此数据映射的直观性如何。