【问题标题】:authenticate in multiple domains using curl (php / symfony 1.4)使用 curl (php / symfony 1.4) 在多个域中进行身份验证
【发布时间】:2012-01-05 00:48:46
【问题描述】:

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

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

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

这是我的代码:(使用 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;

如果我转到该域,则用户未通过身份验证。如果我直接调用该操作,会话将保持不变。

感谢您的帮助。

【问题讨论】:

  • curl 调用的 url 中没有设置 cookie。

标签: php curl symfony1 single-sign-on multiple-domains


【解决方案1】:

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

您正在使用 php,所以SimpleSAMLphp 将是构建 IdP(身份提供者)部分的好软件。

要为 symfony 实现 SP(服务提供者),请查看这个项目:sfSAMLPlugin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2021-01-13
    • 2013-08-17
    相关资源
    最近更新 更多