Distribuzione Web su IIS 7 con autenticazione pass-through


12

Dopo molte configurazioni di prova ed errori, sono attualmente in grado di eseguire lo script di msdeploy.exe per distribuire un pacchetto creato in Visual Studio 2010 su un server remoto che esegue IIS 7.5 con una riga di comando come:

Comando di autenticazione di base:

msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='Basic',username='DOMAIN\myuser',password='xxx',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted

Posso eliminare la necessità di fornire una password nella riga di comando abilitando l'autenticazione pass-through? I documenti Web Deploy menzionano il parametro authType che può specificare "NTLM", anziché Basic. Tuttavia, ogni volta che provo questo (vedere l'esempio seguente), viene visualizzato un errore che indica un 401. Il registro Web WMSvc mostra un 401.2 e nessun userid è popolato in quella voce di registro, a differenza dei tentativi precedenti che utilizzano l'autenticazione di base in realtà mostra DOMAIN \ myuser nel registro web. Non sono state trovate altre informazioni utili nel visualizzatore eventi del client o del server.

Nota: il server web di destinazione si trova su un altro dominio, quindi faccio un net use \\webserver /u:DOMAIN\myuserper stabilire un token.

Tentativo di comando di autenticazione pass-through:

msdeploy -source:package="project.zip" -dest:auto,computerName='https://webserver:8172/MsDeploy.axd',authtype='NTLM',includeAcls='False' -verb:sync -setParamFile:"SetParameters.xml" -allowUntrusted

Sembra che msdeploy.exe non esegua correttamente l'autenticazione con IIS a livello HTTP. Cosa potrebbe esserci di sbagliato?

Il client è Windows XP, il server è Win2008R2. Entrambi eseguono msdeploy.exe versione 7.1.618.0. Entrambi hanno installato .NET 2.0, 3.5 e 4.0.

Risposte:


1

Suppongo che non possiamo usare l'autenticazione pass-through se il computer client non rimane con lo stesso dominio. Se si utilizza la distribuzione Web 1.1, è possibile provare storeCredentials e getCredentials per evitare di inserire un nome utente e una password direttamente in una riga di comando.


0

Potrei non comprendere appieno il tuo problema, ma potresti usare il flag -storeCredentials e -getCredentials per ottenere questo risultato?


0

Questa è chiaramente una risposta tardiva e sono sicuro che l'hai risolto o aggirato, ma nel caso in cui ciò aiuti qualcun altro:

Puoi sicuramente utilizzare MSDeploy per distribuire un pacchetto usando l'autenticazione NTLM anche quando il server web di destinazione si trova su un altro dominio. Questa è approssimativamente la linea di comando che usiamo:

msdeploy.exe -source:package='MyPackage.csproj.zip' -dest:auto,computerName='https://www.myserver.com:8172/MsDeploy.axd?site=mysitename',authtype='NTLM',includeAcls='False' -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"MyPackage.csproj.SetParameters.xml"

Affinché ciò funzioni, eseguiamo questo comando dalla macchina di origine nel contesto di sicurezza di un nome utente + password che corrisponde identicamente a un nome utente + password sul dominio di destinazione.

Il file param probabilmente non ha attinenza con l'autenticazione, ma lo stavo solo includendo per completezza. Questo è il metodo che utilizziamo per applicare diverse stringhe di connessione per l'applicazione a seconda di dove viene distribuita.

Non usiamo l'approccio "net use" per stabilire un token, non sono sicuro che questo si traduca facilmente in autenticazione NTLM tramite HTTP.


-3

Vai alla pagina Amministratore sito IIS -> IIS -> Autenticazione

Abilita autenticazione anonima -> specifica l'utente guest IIS (IUSER_computername)

Concedere l'autorizzazione utente guest IIS alla cartella wwwroot del sito Web.


Non confondere l'autenticazione passthru senza autenticazione.
spoulson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.