PHP OpenSSO аутентификация - PullRequest
1 голос
/ 11 августа 2010

В настоящее время мы внедряем новый сервер 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 находится в домене веб-серверов

1 Ответ

0 голосов
/ 12 августа 2010

Очевидно, что 401 Token is null означает, что вы не отправляете токен с запросом (или что OpenSSO не может извлечь его из запроса).Если я предполагаю, что вы успешно получаете cookie из запроса клиента, я предлагаю вам попробовать передать значение cookie в качестве параметра, а не заголовка.

параметр будет subjectid = значение токена.

Я бы порекомендовал провести тестирование с помощью curl, чтобы получить правильную форму запроса - затем измените код, чтобы он соответствовал успешному запросу curl

...