Мне интересно, как реализовать общую систему входа в междоменный домен, а также передовые методы и меры предосторожности. Если вы знакомы с 37Signals, вы, вероятно, привыкли к использованию универсального механизма аутентификации, в котором вам не нужно впоследствии входить в систему, если вы используете навигацию верхнего уровня к другому продукту. Я хотел бы что-то реализовать аналогичным образом.
Ближайшая вещь, которую я нашел в Интернете, - это запись в Википедии Служба централизованной аутентификации и ответ на Вход в кросс-домен - как автоматически войти в систему при переходе из одного домена в другой, который может быть несколько иным в этом случае.
Я проверил свои файлы cookie сеансов, чтобы понять, что они делают в этом процессе. Первоначально каждая ссылка продукта имеет "goto" uristub, т.е.:
https://MY_COMPANY.campfirenow.com/id/users/[int_identifier]/goto
Используя FireCookie и вкладку NET в Firebug, я могу видеть установленные файлы cookie и перенаправления, которые происходят в процессе. URL-адрес goto
вызывает перенаправление 302:
https://MY_COMPANY.basecamphq.com/login/authenticate?sig=[BASE64_ENCODED_AND_ENCRYPTED_DATA]
Идентификатор сеанса воссоздается, скорее всего, для целей CSRF. Некоторые из данных в файлах cookie, а также в параметре GET параметров были частично расшифрованы с использованием base64_decode следующим образом:
// sig GET param
array(2) {
[0]=>
���ף�:@marshal_with_utc_coercionT7�z��<k��kW"
[1]=>
string(18) "���k�<kn8�f���to��"
}
// _basecamp_session cookie session param
string(247) {
:_csrf_token"1Sj5D6jCwJKIxkZ6oroy7o/mYUqr4R5Ca34cOPNigqkw=:session_id"%060c0804a5d06dafd1c5b3349815d863"
flashIC:'ActionController::Flash::FlashHash{:
@used{: auth{"
MY_COMPANY{:
user_idi�3
:identity_idi�W����������s�]��:�N[��:
߾ "
Кодирование разбивает блок кода. Спасибо за вашу помощь!