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

2023-11-23

当我传入用户凭据时,我的 MSDeploy 部署与 TeamCity 完美配合。命令行参数(使用环境变量作为某些值)是:

MSBuild.exe Web.csproj
/P:配置=%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:用户名=%env.AdminUser%
/P:密码=%env.AdminPassword%

效果很好。但现在我想使用集成身份验证。我尝试遵循特洛伊的建议MSBuild 可以使用集成身份验证还是仅使用基本身份验证进行部署?但这并没有达到目的。我尝试过传入空白用户名并指定的各种组合

/p:AuthType=NTLM

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

使用 Web 管理服务连接到目标计算机(“[我的目标服务器名称]”),但无法授权。确保您使用正确的用户名和密码、您要连接的站点存在,并且凭据代表有权访问该站点的用户。远程服务器返回错误:(401)未经授权

我在本地和远程服务器上运行 Web 管理服务。我将这两个实例更改为以我知道有权访问该站点的用户身份运行 - 如果我手动传递凭据,则该用户可以工作。

我还尝试手动向该用户授予目标站点上的 IIS 管理器权限(尽管不确定为什么需要这样做,因为用户可以在手动传递凭据时发布到该站点)。

我注意到的一件事是,在 WMsvc 日志中,它没有记录任何使用 NTLM 身份验证尝试的用户名。

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

Thanks.


我知道我提交和回答这个问题有点晚了,但为了其他追寻此类问题的人的利益,我刚刚设法让这个工作正常进行。

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

在完成所有这些步骤之前,我一直在与 401 错误作斗争:

  • 确保 AuthType=NTLM 参数集。

  • 确保提供了用户名参数,但设置为空白值。

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

    HKLM\Software\Microsoft\WebManagement\Server
    DWORD WindowsAuthenticationEnabled = 1
    
  • 确保构建代理在构建服务器上运行的用户上下文可以成功与 WMsvc 进行 Windows 集成身份验证连接。实际上,我必须以该用户身份登录到构建服务器,然后打开 IE,并将目标网站添加到本地 Intranet 区域。基本上,我不断地点击这个 URL 并更改 IE 中的设置,直到我可以直接访问它而不会出现身份验证提示或 401 错误:

    https://[the server]:8172/MsDeploy.axd?site=[the site]
    

顺便说一句,当我让身份验证工作时,远程 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.

我在事件日志中找不到任何有用的信息,但此处的修复只是为了确保经过身份验证的用户对目标文件夹拥有必要的文件系统权限。您可能想要更有选择性,但我只是给了他们对 Inetpub 的完全控制权。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用带有集成 Windows 身份验证的 MSDeploy 和 TeamCity 进行部署? 的相关文章

随机推荐