Ошибке 401 Unauthorized с помощью инструмента веб-развертывания с использованием не-администратора пользователей


Можно ли вообще использовать ms web deploy для развертывания веб-приложения в удаленный хост С командная строка С non-administrator пользователей?

Я следил за каждым пунктом в руководстве Microsoft для установка и настройка Web Deploy. Моя цель-иметь возможность выполнять удаленное веб-развертывание с пользователем IIS/пользователем, не являющимся администратором.

после выполнения всех шагов в описано в разделе установка и настройка web deploy для развертывания без администратора, Я получаю следующие сообщения журнала (указывающие, что все в порядке):

Publish enabled for 'deploy_user'
Granted 'deploy_user' full control on 'C:inetpubwwwroot'
Successfully created settings file 'C:Users...Desktopdeploy_user_Default Web Site.PublishSettings'

далее, когда я с моей локальной машины пытаюсь выполнить следующую команду:

.my_deploy_package.cmd /M:https://machine_name:8172/msdeploy.axd -allowUntrusted /U:deploy_user /P:deploy_password /A:Basic /T

Я получаю сообщение об ошибке сказав: Error: удаленный сервер вернул ошибку: (401) Unauthorized.

Если я на целевой машине перейду в Средство просмотра событий > пользовательские представления > События Administratove, я вижу" совпадающую " ошибку с этим сообщением:

IISWMSVC_AUTHORIZATION_SERVER_NOT_ALLOWED

только администраторам Windows разрешено подключаться с помощью сервера соединение. Другие пользователи должны использовать ' Connect to Site или Задача приложения, чтобы иметь возможность подключения.

процесс: WMSvc User=deploy_user

эта ошибка точно такая же, как описано в этот вопрос. И принято отвечать предполагает, что то, что я уже сделал, является правильным подходом.

я попробовал несколько обходных путей, как этой, но ничего не помогает. Служба управления настроена на разрешение удаленных подключений (как Windows, так и IIS Manager), и я запустил конфигурацию как для встроенного пользователя windows (не администратора), так и для пользователя IIS Manager, и все та же ошибка. Как только я запускаю команду deploy с помощью пользователь администратора, однако, это удается.

Я am разрешено удаленно подключаться через графический интерфейс IIS с моим пользователем deploy_user, не являющимся администратором (в IIS:подключение к сайту > [url сервера] / [имя сайта] > deploy_user / deploy_password), указывающее, что настроены необходимые права и правила. Однако, когда я пытаюсь запустить командную строку сценария развертывания-с тем же пользователем - это не удается.

и если это на самом деле is как указывает сообщение об ошибке, любой пользователь, не являющийся администратором, может только использовать подключение к Сайту или приложению через диспетчер IIS, каков тогда рекомендуемый способ развертывания, как это из командной строки / сервера сборки? Я действительно не хочу вводить имя пользователя / пароль пользователя администратора в ясном тексте в конфигурации на сервере сборки...

один из вариантов, который я нашел, это то, что если ваш сервер сборки и машина, которую вы пытаетесь развернуть, имеют общий Active Directory (или другие средства совместного использования пользователей), вы можете пропустить /A:Basic флаг и оставить имя пользователя и пароль в целом. Необходимо только убедиться, что пользователь, выполняющий развертывание, также имеет права администратора на целевой объект развертывания. Однако в одном случае для нас сервер сборки и развертывания target не имеют общую базу пользователей, поэтому это не вариант, и мы вернулись к имени пользователя/паролю в ясном тексте, что совсем не желательно.

4 ответов


поскольку пользователь имеет право администратора только на уровне сайта, а не на корневом уровне IIS, необходимо добавить имя сайта.

вместо https://machine_name:8172/msdeploy.axd вам нужно https://machine_name:8172/msdeploy.axd?site=[MySiteName].

когда это не добавляется,msdeploy пытается получить доступ к сайту через корень IIS. С добавленным параметром сайт доступен напрямую, и прав администратора на конкретном веб-сайте достаточно.


попробуйте запустить непосредственно из командной строки

msdeploy.exe
  -source:package='…\DemoProject.zip'
  -dest:auto,
        computerName='https://TESTWEB1:8172/MSDeploy.axd?site=DemoSite',
        userName='FABRIKAM\User',
        password='Pa$$w0rd',
        authtype='Basic'
  -verb:sync
  -setParamFile:"…\DemoProject.SetParameters.xml"  
  -allowUntrusted

заменить DemoProject.zip С пакетом, TESTWEB1 С вашего сервера. Также изменить username, password, DemoSite и DemoProject.SetParameters.xml соответственно

цитата из здесь


предполагая, что вы не использовали MSI для установки, и вы получили эти шаги, приведенные ниже, правильно установлены и настроены, убедитесь, что WMSvc настроен правильно на сервере. Посмотрите, поможет ли вам этот принятый ответ:https://stackoverflow.com/a/4834248/463478

2.MSI не будет устанавливать компонент обработчика службы веб-управления, если служба веб-управления не установлена;обработчик компонент необходим для развертывания без администратора. Окна сначала следует установить компонент IIS, включая службу Управления чтобы включить установку компонента обработчика.

3.MSI не будет настраивать службу веб-управления для разрешения развертывания без администратора, если PowerShell v2 не установлен. этот шаг установки включает создание правил делегирования на сервере IIS Администрация.конфигурационный файл, позволяющий пользователям, не являющимся администраторами Web Deploy. PowerShell версии 2 встроен в Windows Server 2008 R2, но может потребоваться обновление Windows для Windows Server 2008. Альтернативно the правила делегирования могут быть добавлены вручную после установки.


две вещи, которые действительно помогли мне с этого поста.

  1. указание имени сайта
  2. установка типа аутентификации на basic.

также в моем имени веб-приложения были пробелы, и я продолжал получать ошибку, когда пытался указать url-адрес службы, как это https://machine_name:8172/msdeploy.axd?site=my%20web%20app

я смог решить эту мою настройку имени сайта, используя дополнительный msdeploy.ехе флаг "-setParam:name='IIS Web Application Name',value='my web app'"

моя рабочая команда:

my_deploy_package.cmd / M:https://machine_name:8172/msdeploy.классов AXD / U: deploy_user / P:deploy_password / A: basic - allowUntrusted "-setParam:имя='имя веб-приложения IIS',значение='веб-приложение'"