Ошибка msdeploy ERROR_USER_UNAUTHORIZED: задача веб-развертывания не выполнена

Ошибка веб-развертывания. Ошибка ERROR_USER_UNAUTHORIZED

Мы используем Tfs Build Automation и msdeploy для публикации веб-приложения на удаленной машине.

На шаге "Visual Studio Build" мы устанавливаем эти параметры в "Аргументы MSBuild": /p:DeployOnBuild=true;PublishProfile=myProfile;AllowUntrustedCertificate=true;UserName=$(UserName);Password=$(Password)

После завершения сборки мы получаем эту ошибку:

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Web \ Microsoft.Web.Publishing.targets (4276,5): Ошибка ERROR_USER_UNAUTHORIZED: не удалось выполнить задачу веб-развертывания. (Подключен к удаленному компьютеру ("MySERVER") с помощью веб-службы управления, но не может авторизоваться. Убедитесь, что вы используете правильное имя пользователя и пароль, что сайт, к которому вы подключаетесь, существует и что учетные данные представляют собой пользователь, у которого есть разрешения на доступ к сайту. Подробнее читайте по адресу: http://go.microsoft.com/fwlink/?LinkId=221672.)

Я уверен, что имя пользователя и пароль верны, а пользователь isAdministrator на сервере (MySERVER).

Я проверил журнал службы управления IIS и обнаружил кое-что важное: имя пользователя агента сборки (tfsadmin), отправленное для развертывания в IIS вместо пользователя / пароля, который я установил в переменных сборки.

Поля: дата и время s-ip cs-метод cs-uri-stem cs-uri-запрос s-порт cs-имя пользователя c-ip cs(пользователь-агент) cs(реферир) sc-status sc-substatus sc-win32-status затраченное время

2018-01-03 09:29:02 MYSERVERIP HEAD /msdeploy.axd site=MySiteName 8172 - MyBuildServerIP - - 401 2 5 1322 2018-01-03 09:29:02 MYSERVERIP HEAD /msdeploy.axd site=MySiteName 8172 tfsadmin MyBuildServer - - 401 1 1326 86

Обновление 1: я добавляю больше информации, как вы видите ниже в журнале сборки, в msBuildArgs пароль пуст (вместо ********)!

Версия WebDeploy: 3.6 Версия TFS: 2015.1 Целевой компьютер (MySERVER): Версия IIS для Windows 2012 R2: 8.5 У пользователя "tfsadmin" есть локальный администратор целевого сервера (MyServer) и разрешение диспетчера IIS на целевом сайте IIS.

Журнал сборки:

2018-01-06T06:37:19.9298797Z Starting task: Build solution $/MyProject/MySolution.sln
2018-01-06T06:37:20.0529203Z Executing the powershell script: D:\Agents\Agent-01\tasks\VSBuild\1.0.16\VSBuild.ps1
2018-01-06T06:37:20.3760645Z ##[debug]Entering script VSBuild.ps1
2018-01-06T06:37:20.3790648Z ##[debug]vsLocation = 
2018-01-06T06:37:20.3800653Z ##[debug]vsVersion = 14.0
2018-01-06T06:37:20.3810663Z ##[debug]msBuildLocation = 
2018-01-06T06:37:20.3820668Z ##[debug]msBuildVersion = 
2018-01-06T06:37:20.3830692Z ##[debug]msBuildArchitecture = x64
2018-01-06T06:37:20.3840679Z ##[debug]msBuildArgs = /p:DeployOnBuild=true;PublishProfile=myProfile;AllowUntrustedCertificate=true;UserName=tfsadmin;Password=;Pass2=********
2018-01-06T06:37:20.3840679Z ##[debug]solution = D:\Agents\Agent-01\_work\2\s\MyProject\MySolution.sln
2018-01-06T06:37:20.3860721Z ##[debug]platform = 
2018-01-06T06:37:20.3870700Z ##[debug]configuration = 
2018-01-06T06:37:20.3880727Z ##[debug]clean = true
2018-01-06T06:37:20.3890697Z ##[debug]restoreNugetPackages = true
2018-01-06T06:37:20.3890697Z ##[debug]logProjectEvents = true
2018-01-06T06:37:20.4010877Z ##[debug]Loading module from path 'D:\Agents\Agent-01\agent\worker\Modules\Microsoft.TeamFoundation.DistributedTask.Task.Internal\Microsoft.TeamFoundation.DistributedTask.Task.Internal.dll'.
...

Кто-нибудь может мне помочь?

2 ответа

Deploy from VS с командной строкой будет использовать предоставленные вами имя пользователя и пароль. Однако развертывание из TFS будет использовать агент сборки. Итак, во-первых, служебная учетная запись процесса сборки должна иметь правильные права доступа к удаленному серверу.

Просто попробуйте дать сервису сборку аккаунта local administrator разрешения и IIS Manager Permissionson в область сайта на удаленном сервере ("MySERVER"). Затем установите для параметра имени пользователя значение "" (пустые кавычки) и поле пароля пропущено.

Справка: Build работает только с именем пользователя и паролем в аргументах msbuild

Этот код ошибки может появиться из-за ряда различных причин. Обычно это указывает на проблему аутентификации или авторизации и может произойти по любой из следующих причин:

При подключении с использованием веб-службы управления:

  • Убедитесь, что имя пользователя и пароль верны
  • Убедитесь, что сайт существует
  • Убедитесь, что у пользователя есть разрешения IIS Manager для области сайта.

При подключении с использованием службы удаленного агента:

  • Убедитесь, что имя пользователя и пароль верны
  • Убедитесь, что указанная учетная запись пользователя является членом группы "Администраторы" на удаленном компьютере. ПРИМЕЧАНИЕ: из-за ошибки
    в Web Deploy 2.0 пользователь должен быть либо встроенным администратором, либо членом группы безопасности администраторов домена. Пытается
    синхронизировать с любой другой учетной записью пользователя, даже если это администратор,
    увидит этот код ошибки. Убедитесь, что сайт существует

Ссылка: ERROR_USER_UNAUTHORIZED


ОБНОВИТЬ:

По умолчанию Web Deploy будет подключаться с использованием обычной HTTP-аутентификации. При использовании HTTP Basic Authentication необходимо указать конкретные учетные данные, например

msdeploy.exe -verb:dump -source:apphostconfig,wmsvc=demo-host,authType:basic,username=someuser,password=somepassword

В вашем сценарии вы можете попробовать установить AuthType как NTLM, а затем попробуйте еще раз.

Просто попробуйте добавить строку <AuthType>NTLM</AuthType> публиковать .pubxml файл.

Вы правы, что неверное имя пользователя и пароль в конечном итоге использовались для аутентификации запроса. Выполнение команды net helpmsg 1326 (1326 является sc-win32-status значение из предоставленной вами записи журнала) выдает "Неверное имя пользователя или пароль".

Также интересным является запрос / ответ, записанный до этого. Подстатус 2 для 401 означает "Отказано в доступе из-за конфигурации сервера, предпочитающей альтернативный метод аутентификации", согласно TechNet. А также net helpmsg 1322 yields "Эта операция запрещена, так как она может привести к отключению, удалению или невозможности входа в учетную запись администратора".

  1. Просмотрите (или повторно ознакомьтесь) инструкции по адресу https://docs.microsoft.com/en-us/iis/publish/using-web-deploy/configure-the-web-deployment-handler
  2. Если ваше развертывание все еще не работает, взгляните на Microsoft Устранение неполадок, общих проблем с веб-развертыванием.

Попробуй это:

  • На вашем сервере перейдите в Управление компьютером
  • На левой панели выберите Локальные пользователи и группы.
  • Перейти к пользователям найти tfsadmin пользователь
  • Щелкните его правой кнопкой мыши и выберите Установить пароль.
  • Укажите существующий пароль (какой бы он ни был)

Это кажется ненужным, но у меня сработало. Надеюсь, кто-нибудь сможет объяснить "почему".

Другие вопросы по тегам