единый вход между Vbulletin и рельсами - PullRequest
7 голосов
/ 27 февраля 2009

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


Я работаю над процессом единой регистрации с помощью v Бюллетеня и специального приложения. я могу зайти на Vb используя куки. Я могу получить доступ ко всем. но при доступе отправь "Личное сообщение". это говорит

» Вы отключили личные сообщения. Вы не можете отправлять личные сообщения, пока не включите их, изменив настройки. «

все ли разрешения установлены в таблице "источник данных"? ..

Спасибо мастер

1 Ответ

7 голосов
/ 27 февраля 2009

В идеале ваши два сайта являются поддоменами общего домена (например, forum.example.com и rails.example.com) или совместно используют один и тот же домен (www.example.com.). Один из сайтов будет основным аутентификатором и установит файл cookie ( для .example.com в случае общего родительского домена [обратите внимание на . до example.com] или www.example.com в случае общего домена, чтобы оба приложения могли получить к нему доступ), где файл cookie содержит:

  • user ID
  • a salt (случайное значение, рассчитанное во время входа в систему) и
  • a SHA-2 signature, вычисленный по триплету (user ID + salt + a shared secret key), где общий секретный ключ - это секретная строка, известная обоим сайтам.

Каждый сайт сможет извлечь user ID и salt из файла cookie, а затем использовать shared secret key (известный только для двух приложений), чтобы вычислить SHA-2 signature, которое должно соответствовать сохраненному SHA-2 signature в печенье.

Если SHA-2 signatures совпадает, вы можете предположить, что пользователь прошел аутентификацию, в противном случае вынудите пользователя снова войти в систему.

Файл cookie должен быть уничтожен при выходе из системы.

мелкий шрифт

Для защиты от перехвата сеанса все запросы, сделанные на двух сайтах, должны быть зашифрованы с использованием SSL (используйте https.) Если это невозможно, хэш зависит от IP-адреса клиента, а также от типа и версии браузера (User- Агент), вероятно, должны быть рассчитаны во время входа в систему, а также должны быть сохранены в cookie. Он должен быть перепроверен по IP-адресу клиента и пользовательскому агенту перед обработкой каждого запроса. Подход, основанный на хэше, - это безопасность через мрак, и его можно обмануть; Более того, пользователь, получающий доступ к Интернету из-за пула прокси-серверов или использующий TOR , может быть удален вашей системой каждый раз, когда другой прокси-сервер или выходной узел (с другим IP-адресом) направляет запрос.

...