SSL и аутентификация в нескольких доменах - PullRequest
7 голосов
/ 03 февраля 2010

Я создаю приложение с Ruby on Rails, которое позволяет пользователям зарегистрироваться и создать свой собственный поддомен:

joebloggs.myapp.com

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

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

www.joebloggs.com

Что внезапно вызывает сильную головную боль. Я предполагаю, что для этой цели не существует никакого продукта SSL (то есть потенциально может использоваться для неограниченного количества доменов)?

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

Однако, хотя для большинства веб-сайтов не имеет значения, вошел ли пользователь в систему или нет, я хочу знать, вошел ли пользователь в систему, чтобы я мог отображать немного другой контент для залогиненные пользователи. Я предполагаю, что это вызовет у меня проблему, потому что cookie не может использоваться в нескольких доменах (или может?). Я использую Authlogic для аутентификации.

Так что, на самом деле, мне просто интересно, сталкивался ли кто-нибудь с подобной ситуацией раньше? Если да, то какой подход вы выбрали, чтобы обойти несколько вопросов здесь?

1 Ответ

3 голосов
/ 03 февраля 2010

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

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

Всегда есть поддомен, даже если у пользователя есть свой

Следуя вашему примеру, вы можете показывать исключительно статические страницы на www.joebloggs.com со ссылками для входа в систему, которые ссылаются на joebloggs.myapp.com.Если пользователь уже вошел в систему, фактический шаг входа в систему можно пропустить, так как файлы cookie будут доступны.

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

Обслуживание статических страниц и использование межсайтового AJAX

Существует относительно новый черновой стандарт, называемый Cross-Origin Resource Sharing , который разрешает запросы AJAX между доменами.Firefox поддерживает его начиная с версии 3.5, и есть несколько более читаемых (чем спецификация W3) примеров того, как это работает на практике, в Mozilla Developer Center .

Помимо Firefox 3.5,это поддерживается в IE 8. Это в более новых версиях Chrome и Safari, но я не могу точно определить, с какой версии.(Набор изменений Webkit # 41046.) Я не могу найти ничего определенного об Opera.

Также обратите внимание, что запросы, не относящиеся к GET, имеют дополнительные издержки по сравнению с запросом перед полетом.

Служитьдинамические части с iframe

iframe могут быть хорошо скрыты с помощью некоторого CSS, и могут отображаться на странице без проблем.Вы можете обслуживать динамические части вашей страницы, используя фреймы, указывающие на myapp.com.Это будет работать достаточно хорошо, если динамическая часть - это просто часть заголовка страницы с некоторой информацией об учетной записи и ссылками, например.

Если вы планируете скрывать контент на основе привилегий пользователя, вы можете принять это какДо того, как обслуживать всю область содержимого страницы в виде iframe.

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

Классическое скрытие за невидимым-фреймовый трюк

Множество сайтов, которые раньше размещались на таких платформах, как Geocities, имели те свободные домены .tk, которые «скрывают» сайт за красивым URL в адресной строке.Хитрость заключалась в том, что домен .tk обслуживал набор фреймов с невидимым фреймом и еще один фрейм, покрывающий все окно, которое будет обслуживать сайт Geocities.

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

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