Wie stelle ich die Bereitstellung mithilfe von MSDeploy und TeamCity mit integrierter Windows-Authentifizierung bereit?

8

Ich hatte eine MSDeploy-Bereitstellung, die wunderbar mit TeamCity funktioniert, als ich die Benutzeranmeldeinformationen übergeben habe. Die Befehlszeilenparameter (mit env. Variablen für einige Werte) waren:

  

MSBuild.exe Web.csproj   
/P:Configuration=%env.Konfiguration%   
/ P: DeployOnBuild = Wahr   
/ P: DeployTarget = MSDeployPublish   
/ P: MsDeployServiceUrl = Ссылка
/ P: AllowUntrustedCertificate = True   
/ P: MSDeployPublishMethod = WMsvc   
/ P: CreatePackageOnPublish = Wahr   
/P:UserName=%env.AdminUser%   
/P:Password=%env.AdminPassword%

Hat super funktioniert. Aber jetzt möchte ich integrierte Auth verwenden. Ich habe versucht, die Vorschläge von Troy aus zu folgen. Kann MSBuild mit integrierter Authentifizierung bereitstellen oder nur einfach? aber es macht nicht den Trick. Ich habe verschiedene Kombinationen aus der Eingabe eines leeren Benutzernamens und der Angabe von

ausprobiert
  

/ p: AuthType = NTLM

Am nächsten kommt ich, indem ich / p: AuthType = NTLM spezifiziere und einen leeren Benutzernamen übergebe. Aber das führt immer noch zu diesem Fehler:

  

Verbunden mit dem Zielcomputer ("[Name meines Zielservers]") mithilfe des Webverwaltungsdiensts, konnte jedoch nicht autorisiert werden. Stellen Sie sicher, dass Sie den richtigen Benutzernamen und das richtige Kennwort verwenden, dass die Site vorhanden ist, mit der Sie eine Verbindung herstellen, und dass die Anmeldeinformationen einen Benutzer darstellen, der über Berechtigungen zum Zugriff auf die Site verfügt. Der Remote-Server hat einen Fehler zurückgegeben: (401) Nicht autorisiert

Ich habe den Webverwaltungsdienst auf dem lokalen und dem Remote-Server ausgeführt. Ich habe beide Instanzen so geändert, dass sie als Benutzer ausgeführt werden, von dem ich weiß, dass er den richtigen Zugriff auf die Site hat - derselbe Benutzer, der funktioniert, wenn ich Anmeldeinformationen manuell übergebe.

Ich habe auch versucht, diesem Benutzer IIS-Manager-Berechtigungen auf der Zielwebsite manuell zu geben (obwohl nicht sicher, warum das notwendig wäre, da der Benutzer auf der Site veröffentlichen kann, wenn seine Anmeldeinformationen manuell übergeben werden).

Eine Sache, die ich bemerke, ist, dass es im WMsvc-Protokoll keinen Benutzernamen für die Versuche protokolliert, die mit NTLM-Authentifizierung gemacht wurden.

Irgendeine Idee, was hier vor sich geht. Ich möchte wirklich keine Benutzeranmeldeinformationen in meiner TeamCity-Konfiguration speichern müssen.

Danke.

    
user1035941 08.11.2011, 16:07
quelle

3 Antworten

12

Ich weiß, dass ich etwas spät dran bin, um mich zu unterwerfen und darauf zu antworten, aber zum Vorteil von jemand anderem, der diese Art von Problemen verfolgt, habe ich es gerade geschafft, das zum Laufen zu bringen.

Ähnlich wie beim OP versuchte ich, TeamCity auf Windows Server 2008 R2 dazu zu bringen, eine Website auf einem Remote-IIS 7.5-Server mit WMsvc zu veröffentlichen.

Ich habe mit dem Fehler 401 gekämpft, bis ich alle diese Schritte abgeschlossen habe:

  • Stellen Sie AuthType = NTLM-Parametersatz sicher.

  • Stellen Sie sicher, dass der angegebene Benutzername-Parameter auf einen leeren Wert gesetzt ist.

  • Stellen Sie sicher, dass die NTLM-Authentifizierung auf dem Remote-Webserver aktiviert ist. Dazu muss ein Registrierungseintrag hinzugefügt werden:

    %Vor%
  • Stellen Sie sicher, dass der Benutzerkontext, unter dem der Build-Agent auf dem Build-Server ausgeführt wird, eine Windows-integrierte Auth-Verbindung zu WMsvc erfolgreich herstellen kann. Ich musste mich tatsächlich als dieser Benutzer beim Build-Server anmelden, dann IE öffnen und die Zielwebsite zur lokalen Intranetzone hinzufügen. Im Grunde habe ich diese URL immer noch gedrückt und die Einstellungen im IE geändert, bis ich ohne Authentifizierungsaufforderungen oder 401-Fehler direkt zu dieser URL kommen konnte:

    %Vor%

Übrigens, als ich die Auth funktionierte, fing der Remote-WMSvc an, mir stattdessen 404 Fehler im brownser zu geben, was sich als gutes Zeichen erwies. Während dieses Prozesses habe ich auch ein SSL-Zertifikat auf dem Remote-WMsvc eingerichtet, dem der Build-Server vertraut hat - möglicherweise keine Notwendigkeit, aber es hat mir beim Testen geholfen.

Nachdem ich das oben genannte abgeschlossen habe, haben TeamCity-Bereitstellungen damit begonnen, diesen Fehler zu melden:

%Vor%

Ich konnte im Ereignisprotokoll nichts Nützliches finden, aber das Problem bestand darin, sicherzustellen, dass der authentifizierte Benutzer über die erforderlichen Dateisystemberechtigungen für den Zielordner verfügte. Vielleicht möchten Sie selektiver sein, aber ich habe ihnen die volle Kontrolle über Inetpub gegeben.

    
Michael12345 25.02.2013 03:46
quelle
1

Wird der Build-Agent-Dienst unter dem Konto ausgeführt, das Sie verwenden möchten? Sie erwähnen den Webverwaltungsdienst, aber denken Sie daran, dass es der Erstellungsagent ist, der die Arbeit tatsächlich ausführt und die Rechte benötigt.

    
Troy Hunt 09.11.2011 02:59
quelle
0

Ich gehe davon aus, dass die Bereitstellung mit dem Account des TeamCity-Agenten ausgeführt wird. Dies würde Ihren Fehler erklären. Stellen Sie sicher, dass dieses Konto über die entsprechenden Rechte für die Bereitstellung verfügt.

    
ccellar 08.11.2011 18:29
quelle