Назад | Перейти на главную страницу

Проблемы с загрузкой страниц в TFS 2017 для статических значков и изображений

Я работаю над проектом, в рамках которого мы работаем над разделением веб-уровня на отдельный сервер от уровня приложений в соответствии с нашими требованиями безопасности. Это действительно хорошо сработало, за исключением одного предмета. При доступе к сайту TFS загружается все, кроме статических битов страницы (некоторые шрифты, изображения баннеров и значки). Я подтвердил через журналы на сервере приложений, что учетной записи службы, похоже, предоставлен доступ к файлам, но они фактически не отображаются на странице. Кроме того, для каждого из этих элементов, который пытается загрузить, появляется приглашение входа в систему, а учетные данные пользователя не работают при вводе. Проблема в основном возникает только тогда, когда применяется только HTTPS. Если я оставлю 8080 / HTTP в качестве основного URL-адреса и не буду применять SSL, это будет работать лучше, потому что больше не будет непрерывных запросов на вход в систему, но некоторые значки все еще отсутствуют. При проверке страницы при загрузке принудительной SSL-страницы контент, который не загружается, показывает HTTP / 1.0 с ошибкой 401, но в указанном URL-адресе указан HTTPS. При использовании прямого URL-адреса HTTPS для значка или файла изображения он будет загружен нормально. Затем, поскольку файл кэширован, я могу обновить страницу TFS, и этот значок / изображение будут правильно загружаться без запроса на вход, пока я не очищу кеш браузера. Мне кажется, что в TFS что-то не так. У меня правильно настроены групповые политики для учетной записи службы с олицетворением входа в систему и входа в систему в качестве службы, установленной как на веб-серверах, так и на серверах уровня приложений, поэтому я не считаю, что это проблема. Я пробовал это на нескольких разных сборках 2017 года, все с аналогичными результатами. В настоящее время в обновлении 3,1 2017 г., патч 6, и TFS настроен на использование согласования, поскольку в среде есть ограничения NTLM.

ОБНОВИТЬ: Хотел вернуться сюда и объяснить более подробно, но я был занят. Мы следуем требованиям NIST 800-53 и придерживаемся уровня 2 CIS. Таким образом, рекомендуемая конфигурация веб-приложения должна быть трехуровневой (веб, приложение и данные). TFS по умолчанию технически допускает до 2 уровней, на которых приложение и веб находятся в одном блоке. Мне нужно переместить Интернет в другой ящик для настоящей трехуровневой архитектуры. Итак, я думаю, что мне удалось найти способ своего рода `` обмануть '' TFS, заставив думать, что существует третий сервер для Интернета, который на самом деле не использует службы приложений, как уровень приложений, и по существу разделяет два уровня в результате .

Так я добился того, что я сейчас нахожусь. Это все коробки Server 2016.

  1. Развернуть окно SQL 2016 и добавить учетную запись службы в SQL с помощью sysadmin перед установкой TFS
  2. Включите веб-сервер и сервер приложений. Учетная запись службы добавлена ​​в политики «Олицетворять клиента после аутентификации» и «Вход в качестве службы» в обеих системах.
  3. Установите TFS на сервер приложений, указав на поле SQL во время настройки, позволяя установке создать базы данных. Сначала установите самозаверяющий сертификат TFS, чтобы запустить его, а также установите перенаправление HTTPS, поэтому файлы web.config уже настроены для этого.
  4. Установите TFS на веб-сервер, но НЕ настраивайте какие-либо функции.
  5. В приложении TFS экспортируйте пулы приложений и сайты IIS с помощью командной строки и скопируйте на веб-сервер. Отключите службы IIS. В папке установки TFS и папке TFSCache настройте сетевые ресурсы и предоставьте учетной записи tfsservice доступ для чтения / записи и NETWORK SERVICE вместе с доступом на чтение для группы TFS_Users. (в этой части я все еще не уверен на 100% и играл с многочисленными вариациями с небольшими изменениями в результатах, кроме группы TFS_Users, похоже, это то, что позволяет мне опустить большинство статических битов сайта)
  6. На веб-сервере отредактируйте экспортированный файл «sites», чтобы настроить привязки так, чтобы они указывали на себя, а не на сервер приложений, и обновите физические пути для всех трех записей на их соответствующий путь UNC на сервере приложений. Импортируйте пулы приложений и сайты. В IIS обновите привязки с помощью сертификата, выданного внутренним CA, и отредактируйте параметры приложения> dataDirectory, чтобы указать на UNC-путь к tfs_cache. Перезагрузите IIS.
  7. Вернувшись на сервер приложений, откройте консоль администратора TFS и обновите общедоступный URL-адрес, чтобы он указывал на веб-поле. Hit Test, чтобы он подтвердил и принял сертификат. (Я также установил сертификат на сервер приложений просто на всякий случай, так как я читал что-то о развертывании нескольких серверов с несколькими серверами приложений, чтобы все они выдавали правильный сертификат при использовании сертификатов SSL от центра сертификации. Не уверен, что это было действительно необходимо или нет для моей конфигурации.)
  8. После обновления протестируйте доступ к TFS.

TFS добавит веб-блок в список серверов приложений в консоли администратора, но ни одна из функций в веб-блоке не настроена. TFS рассматривает его почти как прокси-сервер TFS, поскольку он включает локальную группу безопасности TFS_Proxy в веб-блоке, но фактически не создает группу безопасности TFS_Application_Tier, как это делается на сервере приложений. Веб-сервер также не работает в качестве обычного «прокси-сервера TFS», поскольку он не кэширует данные локально для использования, как если бы вы настроили функцию прокси.

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