我在IIS中有以下结构。
Internet Information Services
(local computer)
Web Sites
Default Web Site
MyApplication
MyApplication
是IIS中的应用程序。
Default Web Site
未设置集成Windows身份验证。
但是,我想在MyApplication
上设置集成Windows身份验证。 (它是一个内联网应用程序)。
这可以通过GUI完成:右键单击Default Web Site
并选择Properties
。选择Directory Security
选项卡,然后单击匿名访问和身份验证控件上的Edit
。
我想在安装脚本中包含它。我有其他设置命令,使用adsutil.vbs
,但我很难设置集成Windows身份验证。
运行:
cscript // nologo c:\ Inetpub \ AdminScripts \ adsutil.vbs GET / W3SVC / 1 / NTAuthenticationProviders
返回
NTAuthenticationProviders : (STRING) "NTLM"
然而,我已经完成了能够运行
cscript // nologo c:\ Inetpub \ AdminScripts \ adsutil.vbs GET / W3SVC / 1 / ROOT / MyApplication / NTAuthenticationProviders
但是这会返回
Error Trying To GET the property: (Get Method Failed)
NTAuthenticationProviders (This property is probably not allowed at this node)
是否无法在应用级别设置NTAuthenticationProviders
元数据库属性?
答案 0 :(得分:5)
控制IIS目录安全性上的Authenticated Access属性值的配置数据库属性 - >身份验证方法对话实际上称为AuthFlags
。
该值是一个标志,并在此处记录:
要将此值设置为集成Windows身份验证(AuthNTLM
),请使用以下命令(请注意,因为此命令在默认网站上运行,IISNumber: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会导致它立即更新)。