我們目前正在實施一個新的OpenSSO服務器。服務器位於與Web服務器不同的服務器上,並且無法在我們的PHP Web服務器上進行身份驗證。PHP OpenSSO身份驗證
使用openSSO令牌設置的cookie稱爲iPlanetDirectoryPro。這是從authServer.company.com設置的。我需要從webserver.company.com讀取此內容,然後發送HTTPRequest到authserver.company.com以檢索該OpenSSO令牌的屬性。
目前我的代碼看起來像這樣,但它不工作,我懷疑由於不正確的閱讀cookie。
$url = 'http://authServer.company.com:8080/opensso/identity/attributes';
$r = new HttpRequest();
$r->setURL($url);
$r->setMethod(HTTP_METH_POST);
$valarray = array(
'Host' => 'authServer.company.com',
'Content-Type' => 'application/x-www-form-urlencoded',
'Cookie' => "iPlanetDirectoryPro=$_COOKIE[iPlanetDirectoryPro]"
);
$r->addHeaders($valarray);
var_dump($r);
var_dump($valarray);
#
# request
#
print "<br/>";
print "<b>what i'm saying to the server</b>";
print "<pre>";
#print "iPlanetDirectoryPro cookie: $_COOKIE[iPlanetDirectoryPro]";
print $r->getRawRequestMessage();
print "</pre>";
print "iPlanetDirectoryPro cookie: $_COOKIE[iPlanetDirectoryPro]";
$r->send();
#
# response
#
print "<b>what the server is telling me</b>";
print "<pre>";
$response_body = $r->getResponseBody();
print $response_body;
print "</pre>";
對此的任何想法?我是否以錯誤的方式解決了這個問題?
更新 - 所以我發現的底線是服務器根本無法讀取cookie,因爲它來自另一臺服務器。作爲一個工作aronud我實現了一個REST API,允許用戶從Web服務器提交登錄頁面。它發送給AuthServer,該響應返回。除非無效,否則迴應通常應該是一個標記。如果它是一個令牌,就會創建一個新的cookie,然後應用程序就可以使用該令牌與authserver進行通信,但cookie駐留在web服務器域
你不和錯誤報告開發轉身一路上漲,是嗎?請這樣做 - 代碼中至少有兩個通知級別的錯誤,可能會造成問題。此外,您正在使用哪個HTTP請求類? – Charles 2010-08-11 17:12:43
我正在使用PECL HTTPRequest類。我從服務器返回,但是它的401令牌爲NULL – CogitoErgoSum 2010-08-11 18:03:13