Implementación web en IIS 7 con autenticación de paso

12

Después de mucha configuración de prueba y error, actualmente puedo ejecutar el script msdeploy.exe para implementar un paquete integrado en Visual Studio 2010 en un servidor remoto que ejecuta IIS 7.5 con una línea de comando como:

Comando básico de autenticación:

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

¿Puedo eliminar la necesidad de proporcionar una contraseña en la línea de comando habilitando la autenticación de paso? Los documentos de Web Deploy mencionan el parámetro authType que puede especificar 'NTLM', en lugar de Basic. Sin embargo, cada vez que intento esto (vea el ejemplo a continuación), aparece un error que indica un 401. El registro web de WMSvc muestra un 401.2 y no se rellena ningún ID de usuario en esa entrada de registro, a diferencia de los intentos anteriores que usan la autenticación básica, en realidad muestran DOMAIN \ myuser en el registro web. No se encuentra ninguna otra información útil en el visor de eventos del cliente o servidor.

Nota: El servidor web objetivo está en otro dominio, así que hago un net use \\webserver /u:DOMAIN\myuserpara establecer un token.

Intento de comando de autenticación de paso:

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

Parece que msdeploy.exe no se autentica correctamente con IIS en el nivel HTTP. ¿Qué podría estar mal?

El cliente es Windows XP, el servidor es Win2008R2. Ambos ejecutan msdeploy.exe versión 7.1.618.0. Ambos tienen instalado .NET 2.0, 3.5 y 4.0.

Spoulson
fuente

Respuestas:

1

Supongo que no podemos usar la autenticación de transferencia si la computadora cliente no permanece con el mismo dominio. Si usa web deploy 1.1, puede probar storeCredentials y getCredentials para evitar poner un nombre de usuario y contraseña directamente en una línea de comando.

sky100
fuente
0

Es posible que no entienda completamente su problema, pero ¿podría usar el distintivo -storeCredentials y -getCredentials para lograr esto?

Jeffery Smith
fuente
0

Esta es claramente una respuesta tardía y estoy seguro de que lo resolvió o lo resolvió, pero en caso de que esto ayude a alguien más:

Definitivamente, puede usar MSDeploy para implementar un paquete usando la autenticación NTLM incluso cuando el servidor web de destino está en otro dominio. Esta es aproximadamente la línea de comando que usamos:

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"

Para que esto funcione, ejecutamos este comando desde la máquina fuente en el contexto de seguridad de un nombre de usuario + contraseña que coincide idénticamente con un nombre de usuario + contraseña en el dominio de destino.

El archivo param probablemente no tiene relación con la autenticación, pero solo lo estaba incluyendo para completarlo. Este es el método que utilizamos para aplicar diferentes cadenas de conexión para la aplicación, dependiendo de dónde se implemente.

No utilizamos el enfoque de "uso neto" para establecer un token, no estoy seguro de que esto se traduzca fácilmente en la autenticación NTLM a través de HTTP.

Michael12345
fuente
-3

Vaya a la página de administración del sitio IIS -> IIS -> Autenticación

Habilitar autenticación anónima -> especificar usuario invitado IIS (IUSER_computername)

Otorgue permiso de usuario invitado IIS en la carpeta del sitio web wwwroot.

Guido van Brakel
fuente
No confunda la autenticación passthru con ninguna autenticación.
spoulson