如何使用集成Windows身份验证使用MSDeploy和TeamCity进行部署?

use*_*941 8 msbuild teamcity msdeploy msdeployserviceagent

当我传入用户凭据时,我有一个MSDeploy部署与TeamCity很好地协作.命令行参数(使用某些值的env.变量)是:

MSBuild.exe Web.csproj
/P:Configuration=%env.Configuration%
/ P:DeployOnBuild = True
/ P:DeployTarget = MSDeployPublish
/ P:MsDeployServiceUrl = https://%env.TargetServer%/MsDeploy.axd
/P:AllowUntrustedCertificate = True
/ P:MSDeployPublishMethod = WMsvc
/ P:CreatePackageOnPublish = True
/P:UserName=%env.AdminUser%
/P:Password=%env.AdminPassword%

工作得很好.但现在我想使用集成的身份验证.我尝试使用集成身份验证或只是基本的来自Can MSBuild部署的 Troy建议吗?但它没有做到这一点.我尝试了传递空白用户名和指定的各种组合

/ P:=进行AuthType NTLM

我得到的最接近的是指定/ p:AuthType = NTLM并传入一个空白用户名.但是仍然会导致此错误:

使用Web管理服务连接到目标计算机("[我的目标服务器名称]"),但无法授权.确保您使用的是正确的用户名和密码,您所连接的站点是否存在,以及凭据是否代表具有访问该站点权限的用户.远程服务器返回错误:(401)未经授权

我在本地和远程服务器上都运行Web管理服务.我将两个实例更改为以我认识的用户正确访问该站点的方式运行 - 如果我手动传入凭据,则该用户可以正常工作.

我还尝试在目标站点上手动为该用户提供IIS管理员权限(但不确定为什么这是必要的,因为用户可以在手动传递凭据时发布到站点).

我注意到的一件事是,在WMsvc日志中,它没有记录使用NTLM auth进行尝试的任何用户名.

不知道这里发生了什么.我真的不想在我的TeamCity配置中存储用户凭据.

谢谢.

Mic*_*345 12

我知道我提交并回答这个问题的时间有点迟了,但为了其他任何追逐此类问题的人的利益,我只是设法让这个工作.

与OP类似,我试图让Windows Server 2008R2上的TeamCity使用WMsvc在远程IIS 7.5服务器上发布一个网站.

在完成所有这些步骤之前,我一直在努力解决401错误:

  • 确保AuthType = NTLM参数集.

  • 确保提供了Username参数,但设置为空值.

  • 确保在远程Web服务器上启用了NTLM身份验证,这涉及添加注册表项:

    HKLM\Software\Microsoft\WebManagement\Server
    DWORD WindowsAuthenticationEnabled = 1
    
    Run Code Online (Sandbox Code Playgroud)
  • 确保构建代理程序在构建服务器上运行的用户上下文可以成功执行与WMsvc的Windows集成身份验证连接.我实际上必须以此用户身份登录到构建服务器,然后打开IE,并将目标网站添加到本地Intranet区域.基本上,我一直在点击这个URL并改变IE中的设置,直到我可以直接访问它而没有身份验证提示或401错误:

    https://[the server]:8172/MsDeploy.axd?site=[the site]
    
    Run Code Online (Sandbox Code Playgroud)

顺便说一下,当我使用auth工作时,远程WMSvc开始在Brownser中给我404错误,结果证明是一个好兆头.在此过程中,我还在构建服务器信任的远程WMsvc上设置了SSL证书 - 可能不是必需的,但它有助于我的测试.

完成上述操作后,TeamCity部署开始报告此错误:

An error occurred when the request was processed on the remote computer.
The server experienced an issue processing the request. Contact the server administrator for more information.
Run Code Online (Sandbox Code Playgroud)

我在事件日志中找不到任何有用的东西,但这里的修复只是为了确保经过身份验证的用户对目标文件夹具有必要的文件系统权限.你可能想要更有选择性,但我只是让他们完全控制Inetpub.

  • 只需注意任何人手动添加注册表项WindowsAuthenticationEnabled - 从我浪费的3个小时中学习对部署进行故障排除,并确保不会意外地将尾随空格粘贴到密钥名称中!嘎. (2认同)

cce*_*lar 0

我假设部署是使用 TeamCity-Agent 的帐户执行的。这可以解释你的错误。确保此帐户具有适当的部署权限。