Web Deploy в 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

Могу ли я исключить необходимость ввода пароля в командной строке, включив сквозную аутентификацию? В документах Web Deploy упоминается параметр authType, который может указывать «NTLM» вместо Basic. Однако всякий раз, когда я пытаюсь это сделать (см. Пример ниже), я получаю сообщение об ошибке, указывающее 401. В веб-журнале WMSvc отображается 401.2, и в этой записи журнала не заполняется идентификатор пользователя, в отличие от предыдущих попыток использования обычной аутентификации, в действительности отображается DOMAIN \ 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.

spoulson
источник

Ответы:

1

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

sky100
источник
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"

Чтобы это работало, мы запускаем эту команду с исходного компьютера в контексте безопасности имени пользователя + пароль, который идентичен имени пользователя + пароль в целевом домене.

Файл param, вероятно, не имеет отношения к аутентификации, но я просто включил его для полноты. Это метод, который мы используем для применения различных строк соединения для приложения в зависимости от того, где оно развернуто.

Мы не используем подход «net use» для установки токена, я не уверен, что это легко преобразуется в аутентификацию NTLM через HTTP.

Michael12345
источник
-3

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

Включить анонимную аутентификацию -> указать гостевого пользователя IIS (IUSER_computername)

Предоставьте разрешение гостю IIS на папку wwwroot.

Гидо ван Бракель
источник
Пожалуйста, не путайте промежуточную аутентификацию с аутентификацией вообще.
Спулсон