Asp.net mvc приложения развертывания / проблемы безопасности - PullRequest
0 голосов
/ 11 июня 2010

начну с аплодисментов; Я не был уверен, что это лучше всего опубликовано здесь из-за сбоя сервера, поэтому, если он не в том месте, пожалуйста, переместите: -)

Основная информация

Я написал первый модуль нового приложения на работе. Это написано с использованием Visual Studio 2010, предназначенного для .net 3.5 (на данный момент) и asp.net mvc 2. Это работало нормально во время разработки на встроенном сервере разработки из VS, но, однако, не работает после развертывания в IIS 7 /7.5.

Чтобы развернуть приложение, я построил его в режиме выпуска и создал пакет развертывания, щелкнув правой кнопкой мыши проект в обозревателе решений (это будет сделано с помощью автоматической сборки tfs после обновления из бета-версии). Затем он был импортирован в IIS на сервере.

Приложение использует аутентификацию windows / domain.

Выпуск № 1

Я могу запустить Internet Explorer и перейти к приложению с клиентского компьютера, а также с помощью подключения к удаленному рабочему столу. Я могу выполнить код, который прекрасно читает / сохраняет данные в Session из экземпляра IE на удаленном рабочем столе, но если я обращаюсь к нему с клиентского ПК, он, похоже, теряет состояние сеанса. Я нажимаю на форму отправки, и страница обновляется и не выполняет требуемый код. Я пытался установить с; InProc, SQLServer и StateServer. но без везения: - (

Выпуск № 2

В рамках приложения оно на лету просматривает документы PDF и Tiff, которые находятся в общей сетевой папке в офисе, и создает эскизы, если документ не просматривался ранее. Это работает, если работает на компьютере, на котором развернуто приложение; Однако при просмотре с клиентского ПК я получаю сообщение об ошибке:

Доступ к пути '\\ fileserver \ folder \ file.tif' запрещен Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.UnauthorizedAccessException: доступ к пути «\\ fileserver \ folder \ file.TIF» запрещен.

ASP.NET не авторизован для доступа к запрошенному ресурсу. Рассмотрите возможность предоставления прав доступа к ресурсу для удостоверения запроса ASP.NET. ASP.NET имеет базовый идентификатор процесса (обычно {MACHINE} \ ASPNET в IIS 5 или Network Service в IIS 6), который используется, если приложение не олицетворяет собой. Если приложение олицетворяет себя с помощью идентификатора, это будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный пользователь запроса.

Поскольку он находится на другом сервере, пользователь недоступен. Чтобы обойти это, я попытался:

1 - настройка пула приложений для запуска с правами администратора домена (я знаю, что это угроза безопасности, но я сейчас пытаюсь заставить его работать!)

2 - установить учетную запись для входа в службу World Wide Web Publishing в качестве администратора домена. При попытке перезапустить сервис я получаю ...

Windows не удалось запустить службу публикации в Интернете на локальном компьютере.

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

Любые указатели / помощь будут очень ценными, так как я вырываю свои волосы (из того, что осталось немного).


Обновление

Я использовал этот маленький забавный инструмент, который нашел - DelegConfig v2 beta (инструмент настройки делегирования / Kerberos) .Это было действительно полезно.Итак, у меня есть доступ к файловому ресурсу (есть тестовая страница, которая будет читать файлы), так что теперь у меня возникла проблема с передачей учетных данных пользователей через SQL Server (не мой выборсделать это таким образом !!) выполнить запросы и т. д., но я не могу заставить его войти в систему как пользователь.Он пытается получить доступ к нему как «NT Authority \ Network Service», у которого нет имени входа в SQL (как должно быть вошедшего в систему пользователя).

Моя строка подключения:

<add name="User" connectionString="Data Source=.;Integrated Security=True" providerName="System.Data.SqlClient" />

Первоначальный каталог не указан, так как система работает с несколькими базами данных (тоже не мой выбор !!).

Пока я действительно ценю всю помощь!: -)

Есть еще какие-нибудь намеки ?!

Ответы [ 3 ]

1 голос
/ 11 июня 2010

Выпуск № 2 - Ваши варианты:

  • Настройка делегирования (двойная аутентификация) - я не делал этого на IIS7, и он немного отличается от 6, но я считаю, что вам нужно будет включить учетную запись компьютера веб-сервера для делегирования в AD и создать SPN для веб-сервера (например, setspn -A http/<Web Server FQDN> <Domain>\<Machine Name>). Устранение неполадок Kerberos может быть довольно болезненным.
  • Предоставьте доступ к сетевым ресурсам учетной записи пула приложений (домена) и убедитесь, что включена анонимная проверка подлинности (<anonymousAuthentication enabled="true" userName="" defaultLogonDomain="" />)

Ответ на обновление:

Вам необходимо убедиться, что аутентификация Kerberos работает для SQL Server. Запустите запрос select auth_scheme from sys.dm_exec_connections where session_id=@@spid; он вернет NTLM или KERBEROS. Если это NTLM, вам нужно будет поработать над настройкой SQL Server для использования Kerberos. Установите имя участника-службы в AD для учетной записи службы SQL: setspn -A MSSQLSvc/<SQL Server FQDN>:1433 <Domain>\<Sql Service Account>, перезапустите SQL Server и повторите запрос. Вы должны использовать TCP / IP в качестве механизма подключения (это по умолчанию).

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

0 голосов
/ 14 июня 2010

Наконец, последнее, что я сделал в пятницу ...

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

Я обнаружил, что мне также пришлось настроить его для SQL, когда я проходил через учетные данные на сервер. Еще одна вещь, которую я обнаружил при остановке соединений, - это некоторые настройки брандмауэра для входящих окон, где возникают проблемы.

Для строки подключения; Мне пришлось обновить до:

<add name="ConnectionStringName" connectionString="Data Source=.;Integrated Security=SSPI;Trusted_Connection=True" providerName="System.Data.SqlClient" />

Полезные ссылки:

Аутентификация Kerberos и SQL Server

DelegConfig

И даже если это в основном говорит о Sharepoint ... этот также был полезен.

Надеюсь, это поможет людям в будущем.

0 голосов
/ 11 июня 2010

С этой небольшой частью информации я мог дать только некоторые подсказки:

Проблема № 1: Возможно, у вас есть вводящий в заблуждение URL в качестве действия для формы?Или пойманное и проигнорированное исключение?У вас есть событие onError в вашем global.asax.vb?

Sub Application_Error()
    Dim ex As Exception = Server.GetLastError
    ' NOW HANDLE THE EXCEPTION --> REPORTING :-)
End Sub

Проблема №2: у меня недавно было то же исключение - мне пришлось проверить права доступа для пользователей этой папки и установитьappPool-тождество для "NETWORKSERVICE".В вашем случае вы даже пытаетесь получить доступ к сетевой папке - проверьте права доступа на сервере и попытайтесь использовать IP вместо имени - это может быть проблемой с разрешением имени?!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...