2012-02-23 86 views
0

我想在我的asp.net和php站點中實現SSO。 我成立了一個webservice的〜/ Webservice.asmx在我的asp.net網站提供了一個名爲IsUserOnline(用戶名字符串) 像ASP.NET和Php中使用Web服務的SSO(單點登錄)?

require_once("nusoap/nusoap.php"); 
$client = new nusoap_client("http://www.myaspnetsite.com/Webservice.asmx?WSDL", "wsdl","", "", "", ""); 
$err = $client->getError(); 
if ($err) { 
echo "error ..." . $err . ; 
} 
$param = "username"; 
$result = $client->call("IsUserOnline", $param, "", "", false, true); 

方法,然後我編寫PHP頁面,然後我可以使用結果檢查用戶在線或不在線。 我總是可以使用代碼來檢查每個PHP頁面或只檢查一次,並在PHP網站上創建一個登錄狀態。 你認爲這是一個很好的解決方案嗎?什麼是安全問題?速度問題?

回答

1

在網站之間進行SSO的最簡單方法是共享cookie - 唯一的要求是相同的域(因爲cookie只在同一個域中共享)。

只需創建一個負責記錄用戶的網站。讓網站在成功登錄後創建一個加密的cookie。然後,每個應用程序檢查cookie是否存在,並要求服務解密並返回用戶信息。註銷包括刪除Cookie - 所有網站在嘗試訪問頁面時都會將用戶註銷。

現在有幾個基於這個想法的框架,例如檢查JOSSO。

如果您想要實施企業解決方案,請檢查WS-Federation協議。它的實現可以通過Windows Identity Foundation框架來實現。只需閱讀Vittorio Bertocci編寫的「編程Windows身份基礎」一書,即可獲得所有細節。

相關問題