Подтвердить что ты не робот

401 Несанкционированная ошибка с помощью WebDeploy с использованием пользователя, не являющегося администратором

< TL;DR >
Возможно ли использовать развертывание ms web для развертывания веб-приложения на удаленном хосте из командной строки с помощью не-администратора пользователя?
</TL;DR >

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

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

Publish enabled for 'deploy_user'
Granted 'deploy_user' full control on 'C:\inetpub\wwwroot'
Successfully created settings file 'C:\Users\...\Desktop\deploy_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

Появляется сообщение об ошибке: Ошибка: удаленный сервер ответил на ошибку: (401) Неавторизованный.

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

IISWMSVC_AUTHORIZATION_SERVER_NOT_ALLOWED

Разрешить подключение только администраторам Windows с помощью сервера подключение. Другие пользователи должны использовать "Подключиться к сайту" или Application ", чтобы иметь возможность подключаться.

Процесс: WMSvc Пользователь = deploy_user

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

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

Мне разрешено удаленно подключаться через IIS gui с моим пользователем, не являющимся администратором deploy_user (в IIS: Connect to Site > [server url]/[имя сайта] > deploy_user/deploy_password), указывая на то, что необходимые права и правила настроены. Однако, когда я пытаюсь запустить командную строку развертывания script - с тем же пользователем - что он не работает.

И если на самом деле это сообщение об ошибке указывает, что любой пользователь, не являющийся администратором, может использовать только Connect To Site или приложение через диспетчер IIS, тогда рекомендуется использовать такие развертывания из командной строки/сборки сервер? Я действительно не хочу вводить имя пользователя/пароль пользователя admin в текстовом виде в config на сервере сборки...

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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 соответственно

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

Ответ 3

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

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

3. MSI не будет настраивать службу веб-управления, чтобы разрешить развертывание без администратора, если PowerShell v2 не установлен. Это шаг настройки включает в себя создание правил делегирования на сервере IIS Файл Administration.config, который позволяет пользователям, не являющимся администраторами, использовать Веб-развертывание. PowerShell v2 встроен в Windows Server 2008 R2, но может потребоваться Windows Update для Windows Server 2008. Альтернативно правила делегирования могут быть добавлены вручную после установки.

Ответ 4

Две вещи действительно помогли мне с этой должности.

  • Указание имени сайта
  • Настройка типа аутентификации на базовый.

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

Мне удалось решить эту настройку имени сайта, используя дополнительный флаг msdeploy.exe "-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: name=" Имя веб-приложения IIS ", value =" мое веб-приложение "