Управление службой на удаленном сервере из IIS

Обратите внимание: на каждом шаге, который я описываю ниже, я захожу под одной и той же учетной записью пользователя домена.

У меня есть веб-приложение, которое управляет службой на удаленной машине (через ServiceController). Когда я подключаюсь к веб-сайту удаленно и пытаюсь управлять службой, я получаю исключение InvalidOperationException: доступ запрещен.

Я знаю, что это МОЖЕТ работать, потому что, когда я подключаюсь к веб-сайту с веб-сервера (удаленный рабочий стол, войдите в систему как пользователь моего домена, а затем откройте веб-страницу), он работает как положено.

Я настроил IIS и ASP.NET, чтобы требовать проверки подлинности Windows и олицетворения. Я регистрирую участника текущего потока, когда это терпит неудачу, и я вижу, что поток работает под моей идентификацией, подключаюсь ли я удаленно или с самого сервера.

Я пытался заставить IIS использовать аутентификацию Kerberos, NTLM и то и другое одновременно; независимо от того, сообщает ли мой руководитель свой AuthenticationType как "Negotiate" или "NTLM", не имеет значения. Ни один из них не работает, когда я подключаюсь удаленно (с моей локальной машины)

Еще одна странная вещь об этом заключается в том, что, если я отлаживаю с моей локальной машины / подключаюсь к удаленному серверу, это работает каждый раз! Но я НЕ отлаживаю, каждый раз это терпит неудачу!

Что, черт возьми, здесь может происходить?

2 ответа

Решение

Ваш сценарий - это делегирование, а не подражание. Делегации трудно достичь, и это зависит от многих вещей, которые сделаны правильно.

Начнем с проверки подлинности и устранения неполадок делегирования Kerberos.

Блог Дэвида Вана - очень полезный ресурс по этим вопросам.

"ДРУГАЯ странная вещь об этом заключается в том, что если я отлаживаю с моей локальной машины / подключаюсь к удаленному серверу, он работает каждый раз! Но я НЕ отлаживаю, он каждый раз терпит неудачу!"

Это явный признак того, что у вас есть проблемы с разрешениями. Когда вы запускаете в отладчике, вы работаете как вошедший в систему пользователь, когда вы не отлаживаете, он работает так, как настроено для использования IIS (NETWORK SERVICE по умолчанию). Попробуйте установить (временно!) Включить анонимный доступ, используя учетную запись домена в качестве пользователя, и посмотрите, работает ли это. Если это так, то это означает, что ваш IIS не настроен должным образом для олицетворения (и, вероятно, он работает как NETWORK SERVICE).

Разрешения в IIS могут быть немного точными для правильной настройки... Удачи!

P / S: Это больше похоже на вопрос сетевого администрирования, чем на вопрос программирования (см. https://stackru.com/questions/321618/stackru-is-for-programming-questions-here-are-some-better-forums-for-your)

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