現在、新しい OpenSSO サーバーを実装しています。サーバーは Web サーバーとは別のサーバー上にあり、PHP Web サーバーで認証を行うのに問題があります。
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>";
これについてのアイデアはありますか?私はこれについて間違った方法で行っていますか?
更新- 私が見つけた一番下の行は、別のサーバーから来ていたので、サーバーが単にクッキーを読み取ることができなかったということでした. 作業の一環として、ユーザーが Web サーバーからログイン ページを送信できるようにする REST API を実装しました。応答を返す AuthServer への送信。応答は通常、トークンが無効でない限り、トークンである必要があります。トークンの場合、トークンを含む新しい Cookie が作成されるため、アプリケーションはそのトークンを使用して認証サーバーと通信できますが、Cookie は webservers ドメインの下にあります。