В идеале ваши два сайта являются поддоменами общего домена (например, 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-адресом) направляет запрос.