2014-10-30 57 views
2

我试图从TeamCity中为我们的新API端点之一进行自动化部署。我已经正确设置了一切,包括TeamCity调用MSDeploy将包发送到我们的服务器的最后一步(我们正在讨论我们的集成/测试服务器)。Msdeploy失败:帐户'xxx'似乎不是有效的

一切工作正常,但在IIS中创建新网站时,我们从另一个网站借用服务用户以使应用程序池运行。

当我们创建了一个新的域用户,并在我们的部署中切换应用程序池开始失败。 MSDeploy给出的错误是:

Error: (30/10/2014 15:00:56) An error occurred when the request was processed on the remote computer. [15:00:56][Step 1/1] Error: The account 'XXX' does not appear to be valid. The account was obtained from this location: 'system.applicationHost/applicationPools/******.com'. [15:00:56][Step 1/1] Error: Some or all identity references could not be translated. [15:00:56][Step 1/1] at System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess) [15:00:56][Step 1/1] at System.Security.Principal.NTAccount.Translate(Type targetType) [15:00:56][Step 1/1] at Microsoft.Web.Deployment.Impersonator.GetNTAccount(String userName, String source)

其中XXX是我们创建的新域用户。我们称之为我们借用的旧域用户'YYY'。我们正在使用第三个帐户“ZZZ”与网络部署进行连接。所以,一切都很好,应用程序池运行YYY,但当我们切换到XXX这个错误发生。

我们已经看了看,但是我们在XXX和YYY之间找不到任何区别。他们都在同一个AD组中,并且在服务器上似乎都具有相同的权限。使用帐户XXX通过RDP登录到服务器允许我们打开IIS GUI并浏览/管理这些站点。

我一直无法找到许多其他网站在谈论这个问题,但它让我们完全难住。我们已经重新启动了有问题的网络服务器,看看是否有帮助。它没有。

+0

运气好吗?我有同样的问题... – 2014-11-13 16:25:18

+0

恐怕不是;我们仍在使用我们从另一个应用程序池中偷取的帐户。 – Richiban 2014-11-13 17:05:42

回答

2

这里返回的错误只是一般认证失败错误。在此特定情况下,身份验证失败是由用户主体名称与应用程序池运行用户的SAM帐户名称之间的差异导致的。

具体解释见以下问题,其中验证的Active Directory用户名时使用 - https://serverfault.com/questions/371150/any-difference-between-domain-username-and-usernamedomain-local

在我们的例子中,应用程序池的Active Directory用户名是超过20个字符。 SAM帐户名称有20个字符的限制,这意味着所有超过20的字符都不包含在内。

如链接答案中所述,指定域和用户名时使用的格式将决定使用哪个版本的名称进行身份验证。因此,以“username_longer_than_20_characters”的一个例子用户名以下格式将工作:

域\ username_longer_than - 进行认证使用SAM帐户名 或 username_longer_than_20_characters @域名 - 进行认证使用用户主体名称

答案中的链接文章还解释了如何检查Active Directory用户的SAM帐户名称。

相关问题