Web使用传递身份validation部署到IIS 7

经过大量的试验和错误configuration之后,我目前能够脚本msdeploy.exe将内置Visual Studio 2010的程序包部署到运行IIS 7.5的远程服务器,其命令行如下所示:

基本authentication命令:

msdeploy -source:package="project.zip" -dest:auto,computerName=' https://webserver:8172/MsDeploy.axd ',authtype='Basic',username='DOMAIN\myuser',password='xxx',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted

我可以通过启用传递身份validation来消除在命令行中提供密码的需要吗? Web Deploy文档提到可以指定“NTLM” 的authType参数 ,而不是Basic。 但是,每当我尝试这个(见下面的例子),我得到一个错误,指出一个401. WMSvcnetworking日志显示401.2,并没有用户名填入该日志条目,不像以前的尝试使用基本身份validation实际显示DOMAIN \ myuser在networking日志中。 在客户端或服务器的事件查看器中找不到其他有用的信息。

注意:目标networking服务器位于另一个域中,因此我net use \\webserver /u:DOMAIN\myuserbuild立一个令牌。

直通authentication命令尝试:

msdeploy -source:package="project.zip" -dest:auto,computerName=' https://webserver:8172/MsDeploy.axd ',authtype='NTLM',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted

看来,msdeploy.exe没有正确的身份validation在HTTP级别的IIS。 什么可能是错的?

客户端是Windows XP,服务器是Win2008R2。 两者都运行msdeploy.exe版本7.1.618.0。 两者都安装了.NET 2.0,3.5和4.0。

我想我们不能使用传递身份validation,如果客户端计算机不保留在同一个域。 如果您使用web deploy 1.1,则可以尝试使用storeCredentials和getCredentials,以避免直接在命令行中input用户名和密码。

我可能不完全了解你的问题,但你可以使用-storeCredentials和-getCredentials标志来完成这个?

这显然是一个迟到的答案,我相信你已经解决了这个问题或者解决了这个问题,但是为了帮助别人:

即使目标Web服务器位于另一个域上,也可以使用MSDeploy部署使用NTLM身份validation的程序包。 这大致是我们使用的命令行:

 msdeploy.exe -source:package='MyPackage.csproj.zip' -dest:auto,computerName='https://www.myserver.com:8172/MsDeploy.axd?site=mysitename',authtype='NTLM',includeAcls='False' -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"MyPackage.csproj.SetParameters.xml" 

为此,我们在源机器的安全上下文中运行该命令,该用户名和密码与目标域上的用户名和密码完全匹配

param文件可能对authentication没有任何影响,但我只是为了完整而包含它。 这是我们用来为应用程序应用不同连接string的方法,具体取决于它的部署位置。

我们不使用“networking使用”的方式来build立一个令牌,我不确定这可以通过HTTP轻松转换成NTLMauthentication。

转到IIS站点pipe理页面 – > IIS – >身份validation

启用匿名身份validation – >指定IIS访客用户(IUSER_computername)

授予网站wwwroot文件夹的IIS访客用户权限。