在simplesamlphp

时间:2015-06-13 07:20:49

标签: php session simplesamlphp

这是继我之前的问题

Central login with SAML and making site to work as identity provider

现在我在cauth.com和a.com(或b.com)上开会。通过点击“退出”按钮,可以在网站上注销会话的最佳方式。?

这是我在 cauth.com

中注销的代码
   public function actionSlo(){
      $metadata = \SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();
      $idpEntityId = $metadata->getMetaDataCurrentEntityID('saml20-idp-hosted');
     $idp = \SimpleSAML_IdP::getById('saml2:' . $idpEntityId);
      \sspmod_saml_IdP_SAML2::receiveLogoutMessage($idp);
      assert('FALSE');

      //destroy session 
      session_destroy();

      //redirect to the spentity
      $spId = $_GET['spentityid'];
      header("location:".$spId);

   }

在我看来,注销将需要3次http重定向

1。当用户点击“注销”请求的页面是cauth.com/slo。

  1. 然后,该用户将被带到主站点(a.com或b.com)的注销。

  2. 用户将被重定向到主站点的索引页面。

  3. 我想知道有什么方法可以在内部处理saml注销,减少http重定向的数量,记住我必须清除两个站点上的会话变量吗?

1 个答案:

答案 0 :(得分:0)

尝试清除

中的用户会话
cauth.com( (cauth.com/logout))

清除用户会话需要先启动用户会话并通过

销毁当前用户会话
session_start();    
session_unset();
session_destroy();