Web Deploy para o IIS 7 com autenticação de passagem

12

Após muita configuração de tentativa e erro, atualmente sou capaz de criar um script do msdeploy.exe para implantar um pacote criado no Visual Studio 2010 em um servidor remoto que execute o IIS 7.5 com uma linha de comando como:

Comando de autenticação básica:

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 eliminar a necessidade de fornecer uma senha na linha de comando ativando a autenticação de passagem? Os documentos Web Deploy mencionam o parâmetro authType que pode especificar ' NTLM ', em vez de Basic. No entanto, sempre que eu tento isso (veja o exemplo abaixo), recebo um erro indicando um 401. O log da Web do WMSvc mostra um 401.2 e nenhum ID do usuário é preenchido nessa entrada de log, diferente das tentativas anteriores que usam a autenticação Básica para mostrar o DOMAIN \ myuser no log da web. Nenhuma outra informação útil é encontrada no visualizador de eventos do cliente ou servidor.

Observação: o servidor da Web de destino está em outro domínio, por isso, faço um net use \webserver /u:DOMAIN\myuser para estabelecer um token.

Tentativa de comando de autenticação de passagem:

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 o msdeploy.exe não está sendo autenticado corretamente com o IIS no nível HTTP. O que poderia estar errado?

O cliente é o Windows XP, o servidor é o Win2008R2. Ambos estão executando o msdeploy.exe versão 7.1.618.0. Ambos possuem o .NET 2.0, 3.5 e 4.0 instalados.

    
por spoulson 31.03.2011 / 22:36

4 respostas

1

Acho que não podemos usar a autenticação de passagem se o computador cliente não permanecer no mesmo domínio. Se você usa web deploy 1.1, você pode tentar storeCredentials e getCredentials para evitar colocar um nome de usuário e senha diretamente em uma linha de comando.

    
por 25.05.2011 / 01:21
0

Posso não estar entendendo totalmente o seu problema, mas você poderia usar o sinalizador -storeCredentials e -getCredentials para realizar isso?

    
por 02.11.2011 / 20:37
0

Esta é claramente uma resposta tardia e tenho certeza que você resolveu isso ou trabalhou em torno dele, mas no caso de isso ajudar alguém:

Você pode definitivamente usar o MSDeploy para implantar um pacote usando a autenticação NTLM, mesmo quando o servidor da Web de destino estiver em outro domínio. Esta é aproximadamente a linha 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 isso funcione, executamos esse comando a partir da máquina de origem no contexto de segurança de um nome de usuário + senha que corresponde identicamente a um nome de usuário + senha no domínio de destino.

O arquivo param provavelmente não tem relação com a autenticação, mas eu acabei de incluí-lo por completo. Este é o método que usamos para aplicar diferentes cadeias de conexões para o aplicativo, dependendo de onde ele é implantado.

Não usamos a abordagem "net use" para estabelecer um token, não tenho certeza de que isso se traduza facilmente na autenticação NTLM via HTTP.

    
por 08.10.2014 / 00:48
-3

Vá para a página IIS Site Admin - > IIS - > Autenticação

Ativar autenticação anônima - > especificar usuário convidado do IIS (IUSER_nome_do_computador)

Conceda permissão de usuário convidado do IIS na pasta wwwroot do site.

    
por 22.05.2011 / 09:47