通过直通身份验证将Web部署到IIS 7


12

经过大量的试验和错误配置之后,我现在可以编写msdeploy.exe脚本,以使用以下命令行将Visual Studio 2010中内置的程序包部署到运行IIS 7.5的远程服务器上:

基本身份验证命令:

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

是否可以通过启用传递身份验证来消除在命令行中提供密码的需要?在Web部署文档提到的authType参数可以指定,而不是基本“NTLM”。但是,无论何时尝试此操作(请参见下面的示例),我都会收到一条错误消息,指示401。WMSvcWeb日志显示401.2,并且该日志条目中未填充任何用户ID,这与以前使用基本身份验证的尝试不同,实际上显示的是DOMAIN \ myuser在网络日志中。在客户端或服务器的事件查看器中找不到其他有用的信息。

注意:目标Web服务器在另一个域上,所以我要做一个net use \\webserver /u:DOMAIN\myuser建立令牌。

传递身份验证命令尝试:

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在HTTP级别上未正确通过IIS进行身份验证。有什么事吗

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

Answers:


1

如果客户端计算机不在同一域中,我想我们不能使用传递身份验证。如果使用Web部署1.1,则可以尝试使用storeCredentials和getCredentials以避免直接在命令行中输入用户名和密码。


0

我可能没有完全理解您的问题,但是您可以使用-storeCredentials和-getCredentials标志来完成此操作吗?


0

这显然是一个较晚的答案,我相信您已经解决了这个问题或解决了这个问题,但是如果这可以帮助其他人:

即使目标Web服务器在另一个域上,您也绝对可以使用MSDeploy通过NTLM身份验证来部署程序包。这大致是我们使用的命令行:

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文件可能与身份验证无关,但是为了完整性我只是将其包括在内。这是我们用来根据应用程序的部署位置为应用程序应用不同连接字符串的方法。

我们不使用“ net use”方法来建立令牌,我不确定这是否可以通过HTTP轻松转换为NTLM身份验证。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.