аутентифицироваться в нескольких доменах с помощью curl (php / symfony 1.4) - PullRequest
0 голосов
/ 23 ноября 2011

Я работаю над решением 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;

Если я захожу в этот домен, пользователь не аутентифицирован.Если я вызываю действие напрямую, сеанс сохраняется.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 24 ноября 2011

Для SSO / аутентификации в приложениях разных доменов я рекомендую использовать SAML

Вы используете php, поэтому SimpleSAMLphp будет хорошим программным обеспечением для создания части IdP (провайдера идентификации).

Для реализации SP (поставщика услуг) для Symfony проверьте этот проект: sfSAMLPlugin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...