В настоящее время мы внедряем новый сервер OpenSSO. Сервер находится на сервере, отличном от веб-сервера, и у меня возникают проблемы с проверкой подлинности на нашем веб-сервере PHP.
Набор файлов cookie с токеном openSSO называется iPlanetDirectoryPro. Это установлено от authServer.company.com. Мне нужно прочитать это с webserver.company.com, а затем отправить запрос HTTPRequest на authserver.company.com, чтобы получить атрибуты для этого токена OpenSSO.
В настоящее время мой код выглядит следующим образом, но он не работает, я подозреваю, что он неправильно читает cookie.
<code>$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 "
";
распечатать «iPlanetDirectoryPro cookie: $ _COOKIE [iPlanetDirectoryPro]»;
$ R-> отправить ();
#
# ответ
#
выведите «
что сервер говорит мне »;
печать "
";
$response_body = $r->getResponseBody();
print $response_body;
print "
";
Есть идеи по этому поводу? Я поступаю неправильно?
Обновление - Итак, я обнаружил, что сервер просто не может прочитать cookie, так как он поступает с другого сервера. В качестве рабочего инструмента я реализовал REST API, который позволяет пользователю отправлять страницу входа с веб-сервера. Его посылают AuthServer, который возвращает ответ. Ответ обычно должен быть токеном, если он не является недействительным. Если это токен, то создается новый файл cookie с токеном, чтобы приложения могли использовать этот токен для связи с сервером авторизации, но этот файл cookie находится в домене веб-серверов