2014-03-27 80 views
0

我有兩個simplesamlphp服務器設置,他們都在同一臺物理服務器,但由虛擬主機分開。他們目前在這些領域。SimpleSAMLPHP沒有狀態錯誤

id.saml.domain.com < - 身份提供商

sp.saml.domain.com < - 服務提供商

我也有一個第三個網站,網應用程序,我確實要對在實現單點登錄。我們稱之爲

test.domain.com/webapplication

我有服務提供商和身份提供者互相交談使用例如-auth的。我可以去服務提供商,點擊'測試認證來源',發送到身份服務器,然後獲得登錄提示,輸入示例憑據,單擊提交,然後發送回服務提供商。

在這一點上,一切看起來不錯。

我的問題是,當我嘗試在網站中實現服務提供者。

我已經制定了以下登錄代碼來調用服務提供商的代碼

$lib = "/ltsites/saml/service/lib"; 
    $sp = "default-sp"; // Name of SP defined in config/authsources.php 

    try { 
     // Autoload simplesamlphp classes. 
     if(!file_exists("{$lib}/_autoload.php")) { 
      throw(new Exception("simpleSAMLphp lib loader file does not exist: ". 
      "{$lib}/_autoload.php")); 
     } 

     include_once("{$lib}/_autoload.php"); 
     $as = new SimpleSAML_Auth_Simple($sp); 

     // Take the user to IdP and authenticate. 
     $as->requireAuth(); 
     $valid_saml_session = $as->isAuthenticated(); 

    } catch (Exception $e) { 
     // SimpleSAMLphp is not configured correctly. 
     throw(new Exception("SSO authentication failed: ". $e->getMessage())); 
     return; 
    } 

    if (!$valid_saml_session) { 
     // Not valid session. Redirect a user to Identity Provider 
     try { 
      $as = new SimpleSAML_Auth_Simple($sp); 
      $as->requireAuth(); 
     } catch (Exception $e) { 
      // SimpleSAMLphp is not configured correctly. 
      throw(new Exception("SSO authentication failed: ". $e->getMessage())); 
      return; 
     } 
    } 

    // At this point, the user is authenticated by the Identity Provider, and has access 
    // to the attributes received with SAML assertion. 
    $attributes = $as->getAttributes(); 

它正向我一路身份服務器並請求憑據。但在返回到服務提供商我的錯誤

State information lost 
SimpleSAML_Error_NoState: NOSTATE 

,我發現這個wiki頁面https://code.google.com/p/simplesamlphp/wiki/LostState,但沒有我讀它(如改變config\config.php'session.cookie.domain',剛剛發送的網頁進入無限刷新循環後做)工作

沒有人有任何想法嗎?我是否設置錯誤?我在想也許Web應用程序本身必須是服務提供商?即test.domain.com/webapplication/simplesaml/,這樣兩個人在同一個域上?

回答

1

您可以嘗試在config.php中更改會話store.type。您可以在服務提供商或身份提供商處進行。有兩種方式會有不同的會話存儲。適用於我。

相關問題