Implantação da Web no IIS 7 com autenticação de passagem

12

Após muitas configurações de tentativa e erro, atualmente sou capaz de criar scripts para o msdeploy.exe para implantar um pacote criado no Visual Studio 2010 em um servidor remoto executando 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 do Web Deploy mencionam o parâmetro authType que pode especificar 'NTLM', em vez de Básico. No entanto, sempre que 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 de usuário é preenchido nessa entrada de log, ao contrário das tentativas anteriores usando a autenticação Básica, na verdade, mostram o DOMÍNIO \ myuser no log da web. Nenhuma outra informação útil é encontrada no visualizador de eventos do cliente ou servidor.

Nota: O servidor da web de destino está em outro domínio, por isso faço net use \\webserver /u:DOMAIN\myuserpara 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 pode estar errado?

Cliente é Windows XP, servidor é Win2008R2. Ambos estão executando o msdeploy.exe versão 7.1.618.0. Ambos têm o .NET 2.0, 3.5 e 4.0 instalado.

Spoulson
fonte

Respostas:

1

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

sky100
fonte
0

Talvez eu não esteja entendendo completamente o seu problema, mas você poderia usar os sinalizadores -storeCredentials e -getCredentials para fazer isso?

Jeffery Smith
fonte
0

Essa é claramente uma resposta tardia e tenho certeza de que você resolveu ou resolveu isso, mas, caso isso ajude outra pessoa:

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 na máquina de origem no contexto de segurança de um nome de usuário + senha que corresponde de forma idêntica 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 estava apenas incluindo-o por completo. Este é o método que usamos para aplicar diferentes cadeias de conexão ao aplicativo, dependendo de onde ele está implantado.

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

Michael12345
fonte
-3

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

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

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

Guido van Brakel
fonte
Por favor, não confunda autenticação passthru com nenhuma autenticação.
Spoulson 23/05