2010-08-11 5 views
1

현재 새 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 도메인 아래에 있습니다.

+0

성공적인 컬 요청과 일치하는 코드를 수정가 모든 방법을 설정, 당신은? 코드에 적어도 두 가지주의 수준 오류가있어 문제가 될 수 있습니다. 또한 어떤 HTTP 요청 클래스를 사용하고 있습니까? – Charles

+0

PECL HTTPRequest 클래스를 사용하고 있습니다. 서버로부터 리턴을 얻었지만 401 토큰은 NULL입니다. – CogitoErgoSum

답변

0

분명히 401 토큰은 사용자가 요청과 함께 토큰을 보내지 않았거나 OpenSSO가 요청에서 토큰을 추출 할 수 없습니다. 클라이언트 요청에서 쿠키를 성공적으로 가져 오는 것으로 가정하면 헤더 값보다는 매개 변수로 쿠키 값을 전달하는 것이 좋습니다.

param은 subjectid = token 값입니다.

내가 요청 권리의 양식을 얻을 컬 테스트를 권하고 싶습니다 - 그럼 당신은 오류보고와 개발하지 않는