使用curl(php/symfony 1.4)在多个域中进行身份验证

使用curl(php/symfony 1.4)在多个域中进行身份验证,php,curl,symfony1,single-sign-on,multiple-domains,Php,Curl,Symfony1,Single Sign On,Multiple Domains,我正在为我的应用程序开发SSO解决方案。 我有一个主域accounts.mydomain.com,用户在其中进行登录。成功登录后,我需要验证所有其他域中的用户 每次用户登录时,我都会创建一个身份验证令牌,然后调用每个域的连接方法,该方法读取令牌,从数据库中获取用户,然后在该域中登录该用户 一切正常,但用户I无法在其他域中保留用户会话 这是我的代码:(使用symfony 1.4): My main login action: <?php // get a auth token fo

我正在为我的应用程序开发SSO解决方案。 我有一个主域accounts.mydomain.com,用户在其中进行登录。成功登录后,我需要验证所有其他域中的用户

每次用户登录时,我都会创建一个身份验证令牌,然后调用每个域的连接方法,该方法读取令牌,从数据库中获取用户,然后在该域中登录该用户

一切正常,但用户I无法在其他域中保留用户会话

这是我的代码:(使用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);
如果我进入该域,则用户未经身份验证。如果我直接调用该操作,会话将被持久化


感谢您的帮助。

对于不同域的应用程序中的SSO/身份验证,我建议使用

您正在使用php,因此将是一个很好的软件来构建IdP(身份提供者)部分


要为symfony实现SP(服务提供商),请检查此项目:

未在curl调用的url中设置cookie。
$authToken = $request->getParameter('auth_token');
// $user =  get user from token (...)


   $this->getUser()->signIn($user);
   echo $this->getUser()->isAuthenticated() // returns true;
    return sfView::NONE;