代码之家  ›  专栏  ›  技术社区  ›  Paul

在IIS 6中的应用程序级别设置NTAuthenticationProviders

iis
  •  5
  • Paul  · 技术社区  · 16 年前

    我在IIS中有以下结构。

    Internet Information Services  
     (local computer)
      Web Sites  
       Default Web Site  
        MyApplication
    

    MyApplication 是IIS中的应用程序。

    未在上设置集成Windows身份验证 Default Web Site . 但是,我想在上设置集成Windows身份验证 My应用程序 . (这是一个内部网应用程序)。

    这可以通过GUI完成:右键单击 默认网站 并选择 Properties . 选择 Directory Security 选项卡,然后单击 Edit 匿名访问和身份验证控制。

    我想在安装脚本中包含这个。我有其他设置命令,使用 adsutil.vbs 但我正在努力设置集成的Windows身份验证。

    正在运行:

    cscript//nologo C:\inetpub\adminscripts\adsutil.vbs get/w3svc/1/nAuthenticationProviders

    退换商品

    NTAuthenticationProviders       : (STRING) "NTLM"
    

    但是,我可以跑

    cscript//nologo C:\inetpub\adminscripts\adsutil.vbs get/w3svc/1/root/myapplication/ntaauthenticationProviders

    但这又回来了

    Error Trying To GET the property: (Get Method Failed)
    NTAuthenticationProviders (This property is probably not allowed at this node)
    

    不能设置吗 NTAuthenticationProviders 应用程序级别上的元数据库属性?

    1 回复  |  直到 11 年前
        1
  •  5
  •   erlando    16 年前

    实际上调用了控制“IIS目录安全性”->身份验证方法对话框上已验证访问属性值的元数据库属性。 AuthFlags .

    该值是一个标志,并记录在此处:

    AuthFlags Metabase Property (IIS 6.0) (TechNet)

    将此值设置为集成的Windows身份验证( AuthNTLM )使用以下命令( 注意,因为此命令在默认网站上运行,iisumber:1 -

    adsutil.vbs SET /W3SVC/1/ROOT/MyApplication/AuthFlags 4

    如果您想同时设置NTLM和基本身份验证,那么您可以将布尔值或值放在一起,例如。 MD_AUTH_BASIC | AuthNTLM . 这将产生一个整数结果 6 :

    :: Set both NTLM and Basic authentication
    adsutil.vbs SET /W3SVC/1/ROOT/MyApplication/AuthFlags 6

    如果检查元数据库文件( C:\WINDOWS\system32\inetsrv\MetaBase.xml )并搜索:

    Location="/LM/W3SVC/1/ROOT/MyApplication"

    …您将看到控制此设置的属性(如上设置为6后):

    AuthFlags="AuthBasic | AuthNTLM"

    在元数据库中更新此值可能需要一段时间,因为这样的更改不会立即刷新到文件中(尽管iisreset会导致它立即更新)。