Я работаю над решением SSO для моего приложения.У меня есть основной домен accounts.mydomain.com, где пользователь делает логин.После успешного входа в систему мне нужно аутентифицировать пользователя во всех других моих доменах.
Каждый раз, когда пользователь входит в систему, я создаю токен аутентификации и затем вызываю метод connect для каждого домена, которыйчитает токен, получает пользователя из базы данных и затем входит в систему этого пользователя в этом домене.
Все работает нормально, но пользователь не может сохранить сеанс пользователя в других доменах.
Это мой код: (с использованием symfony 1.4):
My main login action:
<?php
// get a auth token for the user
(...)
// cycle through all my domains and make a curl request to the connect action of each one
// passing the auth token
foreach(sfConfig::get('app_connect_urls') as $url){
$url.= '?auth_token='.$authToken;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$curlResult = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
Мое действие подключения для других доменов, вызываемых curl
$authToken = $request->getParameter('auth_token');
// $user = get user from token (...)
$this->getUser()->signIn($user);
echo $this->getUser()->isAuthenticated() // returns true;
return sfView::NONE;
Если я захожу в этот домен, пользователь не аутентифицирован.Если я вызываю действие напрямую, сеанс сохраняется.
Спасибо за вашу помощь.