Зачем использовать субдомены для обозначения арендаторов в мультитенантном веб-приложении? - PullRequest
26 голосов
/ 14 февраля 2011

Вопросы

  1. Почему некоторые мультитенантные веб-приложения используют субдомены для обозначения арендатора, а другие - нет?
  2. Существуют ли технические, конфиденциальные или соображения безопасности?
  3. Зависит ли это от языка или структуры, используемой для разработки веб-приложения?
  4. Это просто вопрос стиля или выбора разработчика?

Пример веб-приложений, использующих субдомены для определения арендаторов

Пример веб-приложений, не использующих дочерние домены для назначения арендаторов

Ответы [ 2 ]

15 голосов
/ 09 ноября 2014

Существует несколько способов определения клиента на уровне HTTP:

  • домен - арендатор определяется по всему Host заголовку
  • поддомен - часть поддомена заголовка Host,
  • путь основан - сегмент пути, обычно по префиксу host.com/tenantId/...
  • на основе cookie - значение cookie содержит идентификатор арендатора (хорошая инфраструктура это шифрует!)
  • на основе пользователя - сеанс пользователя или некоторые записи данных на сервере

Вот ответы на ваши вопросы:

  1. Многопользовательский (суб) домен хорош, если вы хотите дать пользователю ощущение полностью изолированной аренды. Клиенту может потребоваться настраиваемая страница приветствия и входа в систему, отдельная база пользователей и т. Д. С другой стороны, многопользовательская среда на основе пути удобна для пользователей, которые не привязаны к пространству имен одного владельца. В основном он используется в социальных сетях, таких как Facebook, GitHub и т. Д.

  2. (Под-) домены могут предоставить вам лучшую изоляцию и контроль безопасности для файлов cookie, совместного использования ресурсов между источниками (CORS). Это делает кросс-арендатор CSRF или XSS немного сложнее. Более того, если у вас есть контроль над DNS или балансировщиком нагрузки, вы можете назначать арендаторов для разных IP-адресов (например, гео-маршрутизация) или для различных версий приложения (например, бета-арендаторы). Вы можете назначить отдельный экземпляр приложения или сервер для ваших наиболее важных арендаторов. Таким образом, вы получаете дешевый инструмент для контроля риска одной точки отказа и всех яиц в одной корзине.

  3. Любая веб-структура, которая дает вам доступ к заголовкам HTTP (Host), может работать с поддоменами. Любая серьезная веб-инфраструктура MVC должна предоставлять вам субдомен в качестве параметра действия напрямую или с помощью плагина.

  4. Это определенно выбор дизайна. Если вы хотите узнать лучший способ, подумайте, какой уровень изоляции вы хотите для своих арендаторов. Если вы решите, но обнаружите, что путь неправильный, вы можете перейти на другой уровень с помощью перенаправления HTTP 301.

4 голосов
/ 14 февраля 2011
  1. См. Ниже.
  2. Файлы cookie будут наиболее очевидными, а во-вторых, вы можете изменить настройки DNS для субдомена, но не для пути
  3. Нет
  4. Частично, см. Выше.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...