Веб-розгортання до IIS 7 з прохідною автентифікацією


12

Після довгих конфігурацій проб і помилок я наразі в змозі скрипт msdeploy.exe розгорнути пакет, вбудований у Visual Studio 2010, на віддалений сервер під керуванням IIS 7.5 з командним рядком:

Основна команда аутентифікації:

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

Чи можу я усунути необхідність ввести пароль у командному рядку, включивши автентифікацію проходження? Документи веб-розгортання згадують параметр authType, який може задавати "NTLM" замість Basic. Однак кожного разу, коли я спробую це (див. Приклад нижче), я отримую помилку із зазначенням 401. Веб-журнал WMSvc показує 401.2, і жоден користувач не заповнюється в цьому записі журналу, на відміну від попередніх спроб використання автентифікації Basic насправді показує ДОМАН \ myuser у веб-журналі. Іншої корисної інформації в переглядачі подій клієнта чи сервера не знайдено.

Примітка. Цільовий веб-сервер знаходиться на іншому домені, тому я роблю net use \\webserver /u:DOMAIN\myuserдля встановлення маркер.

Спроба команди проходження автентифікації:

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

Здається, msdeploy.exe не належним чином автентифікується з IIS на рівні HTTP. Що може бути не так?

Клієнт - Windows XP, сервер - Win2008R2. В обох працює msdeploy.exe версії 7.1.618.0. В обох встановлені .NET 2.0, 3.5 та 4.0.

Відповіді:


1

Я думаю, що ми не можемо використовувати автентифікацію, якщо клієнтський комп'ютер не має того самого домену. Якщо ви використовуєте веб-розгортання 1.1, ви можете спробувати storeCredentials та getCredentials, щоб уникнути введення імені користувача та пароля безпосередньо в командному рядку.


0

Я, можливо, не повністю розумію вашу проблему, але чи можете ви використати прапор -storeCredentials та -getCredentials для цього?


0

Це явно пізня відповідь, і я впевнений, що ти вирішив це чи працював над цим, але якщо це допомагає комусь іншому:

Ви однозначно можете використовувати MSDeploy для розгортання пакету, використовуючи аутентифікацію NTLM, навіть коли цільовий веб-сервер знаходиться на іншому домені. Це приблизно командний рядок, який ми використовуємо:

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"

Для цього ми запускаємо цю команду з вихідної машини в контексті безпеки імені користувача + пароля, який однаково відповідає імені користувача + паролю в цільовому домені.

Файл парам, мабуть, не має ніякого відношення до автентифікації, але я просто включав його для повноти. Це метод, який ми застосовуємо для застосування різних рядків з'єднання для програми залежно від того, де воно розгорнуте.

Ми не використовуємо підхід "net use" для встановлення маркера, я не впевнений, що це легко перетворюється на автентифікацію NTLM через HTTP.


-3

Перейдіть на сторінку адміністратора сайту IIS -> IIS -> Автентифікація

Увімкнути анонімну автентифікацію -> вказати гостя IIS (IUSER_комп'ютер)

Надати дозвіл користувача IIS на папку wwwroot.


Будь ласка, не плутайте автентифікацію passthru з автентифікацією взагалі.
подружжя
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.