현재 새 OpenSSO 서버를 구현 중입니다. 서버가 웹 서버와 다른 서버에 있고 PHP 웹 서버에서 인증을받는 데 문제가 있습니다.PHP OpenSSO 인증
openSSO 토큰과 함께 설정된 쿠키의 이름은 iPlanetDirectoryPro입니다. authServer.company.com에서 설정합니다. webserver.company.com에서이 내용을 읽은 다음 authserver.company.com에 HTTPRequest를 보내 해당 OpenSSO 토큰의 속성을 검색해야합니다.
현재 내 코드는 다음과 같이 보이지만 작동하지 않습니다. 올바르게 쿠키를 읽지 않아서 의심됩니다.
$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>";
아이디어가 있으십니까? 나는 이것에 대해 잘못된 방향으로 가고 있는가?
업데이트 - 그래서 결론은 서버가 다른 서버에서 오는 것처럼 쿠키를 읽을 수 없다는 것입니다. work aronud로서 나는 사용자가 웹 서버로부터 로그인 페이지를 제출할 수있게하는 REST API를 구현했다. 응답을 제공하는 AuthServer로 전송합니다. 일반적으로 응답은 유효하지 않은 토큰이어야합니다. 쿠키가 토큰 인 경우 응용 프로그램에서 해당 토큰을 사용하여 authserver와 통신 할 수 있지만 쿠키는 webservers 도메인 아래에 있습니다.
성공적인 컬 요청과 일치하는 코드를 수정가 모든 방법을 설정, 당신은? 코드에 적어도 두 가지주의 수준 오류가있어 문제가 될 수 있습니다. 또한 어떤 HTTP 요청 클래스를 사용하고 있습니까? – Charles
PECL HTTPRequest 클래스를 사용하고 있습니다. 서버로부터 리턴을 얻었지만 401 토큰은 NULL입니다. – CogitoErgoSum