2011-11-08 11 views
8

Avevo una distribuzione MSDeploy che funzionava perfettamente con TeamCity quando ho inoltrato le credenziali dell'utente. I parametri della riga di comando (utilizzando le variabili di ambiente per alcuni valori) erano:Come distribuire utilizzando MSDeploy e TeamCity con l'autenticazione integrata di Windows?

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%

Ha funzionato benissimo. Ma ora voglio usare auth integrata. Ho provato a seguire i suggerimenti di Troy dal Can MSBuild deploy using integrated authentication or only basic? ma non sta facendo il trucco. Ho provato varie combinazioni di passare un nome utente vuoto e specificando

/p:AuthType=NTLM

Il più vicino che ottenga è specificando/p: AuthType = NTLM e passando in un nome utente vuoto. Ma che si traduce ancora in questo errore:

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

ho il servizio di gestione Web in esecuzione su entrambi i server locali e remoti. Ho cambiato entrambe le istanze per l'esecuzione come utente che conosco ha un accesso corretto al sito, lo stesso utente che funziona se passo manualmente le credenziali.

Inoltre, ho provato manualmente a fornire all'utente le autorizzazioni di Gestione IIS sul sito di destinazione (anche se non sono sicuro del motivo per cui sarebbe necessario poiché l'utente può pubblicare sul sito quando le sue credenziali vengono passate manualmente).

Una cosa che sto notando è che nel registro WMsvc non sta registrando alcun nome utente per i tentativi effettuati con l'autenticazione NTLM.

Qualche idea su cosa sta succedendo qui. Non voglio davvero dover memorizzare le credenziali dell'utente nella mia configurazione di TeamCity.

Grazie.

risposta

0

Suppongo che la distribuzione venga eseguita con l'account di TeamCity-Agent. Questo spiegherebbe il tuo errore. Assicurarsi che questo account disponga dei diritti appropriati per la distribuzione.

+0

Vedere le osservazioni sopra. Risposta breve, ha. – user1035941

1

Il servizio agente di creazione è in esecuzione con l'account che si desidera utilizzare? Lei menziona il servizio di gestione web, ma ricorda che è l'agente di creazione che sta effettivamente facendo il lavoro e ha bisogno dei diritti.

+0

Scusa, avrei dovuto farlo notare. Sì, anche il servizio Agente di TeamCity Build è in esecuzione con l'account con le autorizzazioni appropriate. È sempre stato così, ho appena aggiornato il servizio di gestione Web dall'errore indicato "utilizzando il servizio di gestione Web". – user1035941

+0

@Troy sei connesso correttamente al WMSvc usando NTLM? Un semplice test come 'msdeploy.exe -verb: dump -source: apphostconfig, wmsvc = SERVER123, username =, authType = ntlm -allowUntrusted' dove sono un amministratore su SERVER123, genera 401 errori. – arcain

12

So che sono un po 'in ritardo di invio e risposta su questo, ma a beneficio di chiunque altro inseguendo questo tipo di problema, sono appena riuscito a farlo funzionare.

Analogamente all'OP, stavo cercando di ottenere TeamCity su Windows Server 2008R2 per pubblicare un sito Web su un server IIS 7.5 remoto utilizzando WMsvc.

ero alle prese con l'errore 401 fino a quando ho completato tutti questi passaggi:

  • Assicurarsi AuthType = set di parametri NTLM.

  • Verificare il parametro Nome utente fornito, ma impostare su un valore vuoto.

  • Verificare l'autenticazione NTLM abilitato sul server Web remoti, ciò ha comportato l'aggiunta di una voce di registro:

    HKLM\Software\Microsoft\WebManagement\Server 
    DWORD WindowsAuthenticationEnabled = 1 
    
  • Garantire contesto utente in cui l'agente di compilazione viene eseguito sul server di build può fare con successo un'autenticazione integrata di Windows connessione a WMsvc.In realtà ho dovuto accedere al server di build come utente, quindi aprire IE e aggiungere il sito Web di destinazione alla zona Intranet locale. Fondamentalmente, ho continuato a colpire questo URL e la modifica delle impostazioni in IE fino a quando ho potuto ottenere dritto ad esso senza richieste di autenticazione o errori 401:

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

Per inciso, quando ho ottenuto il funzionamento di autenticazione, il WMSvc remota iniziato dando ho invece errori 404 nel brownser, che si è rivelato un buon segno. Durante questo processo, ho anche impostato un certificato SSL sul WMsvc remoto che era attendibile dal server di build, probabilmente non necessario ma che ha aiutato i miei test.

una volta ho avuto completato quanto sopra, le implementazioni TeamCity iniziato segnalato questo errore:

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. 

non riuscivo a trovare qualcosa di utile nel registro eventi, ma la correzione è stata qui solo per garantire che l'utente autenticato aveva le autorizzazioni necessarie per il filesystem sulla cartella di destinazione. Potresti voler essere più selettivo, ma ho dato loro il controllo completo su Inetpub.

+2

Solo una nota per chiunque aggiunga manualmente il codice reg WindowsAuthenticationEnabled - impara dalle 3 ore che ho appena sprecato a risolvere una distribuzione e assicurati di non incollare accidentalmente uno spazio finale nel nome della chiave! Gah. – Michael12345

+0

+1 per segnalare il problema della zona Intranet locale. Ho funzionato quando ho provato a usare computerName = 'https: //192.168 ....: 8172' invece di un nome host. Tuttavia, specificare un nome utente vuoto sembra inutile farlo funzionare. –

Problemi correlati