Например:
- Мы используем два сайта сообщества на двух доменах (назовите их
example.com
иexample.net
). - Мы хотим иметь возможность расширять это до большего количества доменов позже.
- Мы хотим разрешить несколько типов входа (OpenID, Facebook, Twitter, стандартное имя пользователя/пароль).
- Мы хотим, чтобы кто-то, кто вошел в один сайт, автоматически регистрировался в другом.
Другими словами, он немного похож на сеть StackExchange.
В этом случае, будет ли этот план работать?
- Настройте
example.com
иexample.net
(и любые последующие добавления) в качестве сторонних пользователей OpenID, которые принимают вход OpenID только изid.example.org
. - Настройте
example.com
иexample.net
для немедленного запроса ответа OpenID при первом посещении, так что, если вы вошли вid.example.org
, вы сразу же и автоматически заходите на сайт, повторное посещение. Они должны установить cookie, если вы не вошли в систему, чтобы сохранить их, делая это при каждом запросе страницы. - Настройте
id.example.org
как поставщик и потребитель OpenID. Он также должен потреблять Facebook и другие поставщики удостоверений личности и разрешать стандартное использование имени пользователя/пароля. (Несколько учетных методов могут быть прикреплены к одной учетной записи.) - При выходе из системы просто измените токены аутентификации в базе данных. У пользователя все равно будут файлы cookie, но они будут бессмысленными. Таким образом, пользователь может быть выписан из всех сайтов одновременно. Несколько токенов аутентификации могут храниться у одного пользователя за один раз (и должны быть разными для каждого сайта), так что пользователь может выйти в одном браузере, но все же будет подписан другим. Выход из системы всегда выдается для всех сайтов.
Единственная проблема, которую я вижу выше:
- Кто-то посещает
example.com
. Установлен "не зарегистрированный" cookie. - Затем Zie переходит на
example.net
. То же. - Затем Zie регистрируется и продолжает просмотр
example.net
. - Затем Zie возвращается к
example.com
и из-за "не зарегистрированного" cookie не проверяется наid.example.org
и поэтому не вошел в систему. - Однако, как только zie нажимает кнопку "войти", zie входит в систему.
Я не думаю, что это серьезная проблема.
В целом, я думаю, что это довольно хорошая система. Я просто хотел бы, чтобы он был рассмотрен. Есть ли какие-то проблемы, которые я не предвидел? Было бы плохо или медленно? StackExchange использует совершенно другой метод. Я полагаю, у них есть веская причина для этого?