2011-11-08 36 views
8

當我傳入用戶憑據時,我有一個MSDeploy部署與TeamCity一起工作得非常好。命令行參數(使用某些值的env變量)爲:如何使用集成Windows身份驗證使用MSDeploy和TeamCity進行部署?

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 deploy using integrated authentication or only basic?以下特洛伊的建議,但它並沒有這樣做。我試圖傳遞一個空白的用戶名和指定

/p:AuthType=NTLM

我得到的最接近的是通過指定/ P的各種組合:=進行AuthType NTLM和傳遞一個空白的用戶名。但是,仍然會導致此錯誤:

Connected to the destination computer ("[my destination server name]") using the Web Management Service, but could not authorize. Make sure that you are using the correct user name and password, that the site you are connecting to exists, and that the credentials represent a user who has permissions to access the site. The remote server returned an error: (401) Unauthorized

我在本地和遠程服務器上都運行Web管理服務。我將兩個實例都更改爲以用戶身份運行,我知道該用戶具有對該站點的適當訪問權限 - 如果手動傳遞憑據,則可以使用該用戶。

我也嘗試在目標站點上手動授予該用戶IIS管理器權限(儘管不知道爲什麼這樣做是必要的,因爲用戶可以在手動傳遞憑據時發佈到站點)。

我注意到的一件事是,在WMsvc日誌中,它沒有記錄任何使用NTLM身份驗證進行嘗試的用戶名。

任何想法發生了什麼這裏。我真的不想在我的TeamCity配置中存儲用戶憑據。

謝謝。

回答

0

我假定使用TeamCity-Agent的帳戶執行部署。這會解釋你的錯誤。確保此帳戶具有適當的部署權限。

+0

查看以上評論。簡而言之,它具有。 – user1035941

1

構建代理服務是否在要使用的帳戶下運行?您提到了Web管理服務,但請記住它是構建代理,它實際上正在執行此項工作並需要這些權限。

+0

對不起,我應該指出。是的,TeamCity Build Agent Service也在具有適當權限的帳戶下運行。情況總是如此,我剛剛更新了Web管理服務,因爲錯誤指示爲「使用Web管理服務」。 – user1035941

+0

@Troy您是否已成功使用NTLM連接到WMSvc?像'msdeploy.exe -verb:dump -source:apphostconfig,wmsvc = SERVER123,username =,authType = ntlm -allowUntrusted'這樣簡單的測試,我是SERVER123上的管理員,會產生401錯誤。 – arcain

12

我知道我有點遲到提交和回答這個問題,但爲了追求這類問題的其他人的利益,我只是設法讓這個工作。

與OP類似,我試圖讓Windows Server 2008R2上的TeamCity在使用WMsvc的遠程IIS 7.5服務器上發佈網站。

我是用401錯誤掙扎,直到我完成了所有這些步驟:

  • 確保=進行AuthType NTLM參數集。

  • 確保提供了用戶名參數,但設置爲空白值。

  • 確保遠程Web服務器上啓用NTLM身份驗證,這涉及添加註冊表項:

    HKLM\Software\Microsoft\WebManagement\Server 
    DWORD WindowsAuthenticationEnabled = 1 
    
  • 確保用戶的環境下,其生成代理構建服務器可以成功地做一個集成的Windows身份驗證上運行連接到WMsvc。我實際上必須以該用戶身份登錄到構建服務器,然後打開IE,然後將目標網站添加到本地Intranet區域。基本上,我不停地打這個URL,然後在IE瀏覽器改變設置,直到我能直接得到它無需身份驗證提示或401錯誤:

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

順便說一句,當我拿到身份驗證工作,遠程WMSVC開始給我在布朗澤錯誤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。

+2

只需手動添加註冊表項WindowsAuthenticationEnabled的注意事項 - 從我剛剛浪費的3小時中學習部署故障排除,並確保您不會意外地將尾隨空格粘貼到密鑰名稱中!嘎。 – Michael12345

+0

+1,用於指出本地Intranet區域問題。當我嘗試使用computerName ='https://192.168 ....:8172'而不是主機名時,我得到了它的工作。然而,指定一個空白的用戶名似乎沒有用,以使其工作。 –

相關問題