< 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
и оставить вне имени пользователя и пароля вообще. Вы должны только убедиться, что пользователь, выполняющий развертывание, также имеет права администратора на цели развертывания. Однако в одном случае для нас сервер сборки и цель развертывания не имеют общей базы пользователей, поэтому это не вариант, и мы возвращаемся к имени пользователя/паролю в виде открытого текста - что нежелательно вообще.