Wdrażanie przez Internet w IIS 7 z uwierzytelnianiem przekazywanym

12

Po długiej konfiguracji prób i błędów obecnie jestem w stanie napisać skrypt msdeploy.exe w celu wdrożenia pakietu wbudowanego w Visual Studio 2010 na zdalnym serwerze z uruchomionym IIS 7.5 za pomocą wiersza poleceń takiego jak:

Podstawowe polecenie uwierzytelnienia:

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

Czy mogę wyeliminować potrzebę podawania hasła w wierszu poleceń, umożliwiając uwierzytelnianie tranzytowe? Dokumenty Web Deploy wspominają parametr authType, który może określać „NTLM” zamiast Basic. Jednak za każdym razem, gdy spróbuję tego (patrz przykład poniżej), pojawia się błąd wskazujący 401. Dziennik internetowy WMSvc pokazuje 401,2 i żaden wpis użytkownika nie jest wypełniany w tym wpisie dziennika, w przeciwieństwie do poprzednich prób używania uwierzytelnienia podstawowego faktycznie pokazuje DOMAIN \ mój użytkownik w dzienniku internetowym. W podglądzie zdarzeń klienta ani serwera nie znaleziono żadnych innych przydatnych informacji.

Uwaga: Docelowy serwer znajduje się w innej domenie, więc robię a, net use \\webserver /u:DOMAIN\myuseraby ustanowić token.

Próba polecenia uwierzytelnienia przekazywanego:

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

Wygląda na to, że msdeploy.exe nie jest poprawnie uwierzytelniany w IIS na poziomie HTTP. Co może być nie tak?

Klientem jest Windows XP, Serwer to Win2008R2. Oba działają w systemie msdeploy.exe w wersji 7.1.618.0. Oba mają zainstalowane .NET 2.0, 3.5 i 4.0.

spoulson
źródło

Odpowiedzi:

1

Wydaje mi się, że nie możemy używać uwierzytelniania przekazywanego, jeśli komputer kliencki nie pozostaje w tej samej domenie. Jeśli korzystasz z wdrożenia internetowego 1.1, możesz spróbować storeCredentials i getCredentials, aby uniknąć umieszczenia nazwy użytkownika i hasła bezpośrednio w wierszu polecenia.

sky100
źródło
0

Być może nie do końca rozumiem twój problem, ale czy możesz użyć flag -storeCredentials i -getCredentials, aby to zrobić?

Jeffery Smith
źródło
0

To jest zdecydowanie późna odpowiedź i jestem pewien, że rozwiązałeś ten problem lub obejrzałeś go, ale na wypadek, gdyby to pomogło komuś innemu:

Możesz zdecydowanie użyć MSDeploy do wdrożenia pakietu przy użyciu uwierzytelniania NTLM, nawet jeśli docelowy serwer WWW znajduje się w innej domenie. Jest to w przybliżeniu wiersz poleceń, którego używamy:

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"

Aby to zadziałało, uruchamiamy to polecenie z komputera źródłowego w kontekście bezpieczeństwa nazwy użytkownika + hasła, które identycznie odpowiadają nazwie użytkownika + hasłu w domenie docelowej.

Plik param prawdopodobnie nie ma wpływu na uwierzytelnianie, ale po prostu podałem go dla kompletności. Jest to metoda, której używamy, aby zastosować różne parametry połączenia dla aplikacji w zależności od miejsca jej wdrożenia.

Nie używamy metody „net use” do ustanowienia tokena, nie jestem pewien, czy przekłada się to łatwo na uwierzytelnianie NTLM przez HTTP.

Michael12345
źródło
-3

Przejdź do strony Administratora witryny IIS -> IIS -> Uwierzytelnianie

Włącz anonimowe uwierzytelnianie -> określ użytkownika-gościa IIS (IUSER_nazwa_komputera)

Udziel uprawnienia gościa IIS na folderze wwwroot strony.

Guido van Brakel
źródło
Nie należy mylić uwierzytelniania passthru z brakiem uwierzytelnienia.
spoulson