Я использую этот php-скрипт для доступа к / oauth2 / authorize конечной точке openam:
<?php
//debug
error_reporting(E_ALL);
ini_set('display_errors', 1);
//debug end
function get_web_page($url)
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => true, // return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$header = curl_getinfo($ch);
curl_close( $ch );
//print($header[0]);
echo $content;
//var_dump($content);
return $header;
}
$thisurl = "http://openam.example.com:8080/openam/oauth2/authorize?realm=/openLDAP&client_id=agent2&redirect_uri=http://openam.test.com:8080/openam&response_type=code&scope=profile";`
$myUrlInfo = get_web_page($thisurl);
//echo $myUrlInfo["url"];
?>
И я получаю пустую веб-страницу, но я вижу в подзаголовке «ForgeRock Access …», и я думаю, что аутентификация agent2 прошла успешно, потому что, когда я изменяю «agent2» на «agent1», у меня появляется эта ошибка в папке отладки: ERROR: Unable to get Client Registration for client_Id = agent1
Поэтому я пришел к выводу, что мне удалось подключиться к конечной точке, но я не понимаю, почему я не перенаправлен на веб-страницу аутентификации пользователя.
Я уже попробовал тот же скрипт и изменил URL на «https://www.google.fr/«и в этом случае я перенаправлен в Google.
Спасибо заранее за вашу помощь.
Вывод после добавления var_dump ($ myUrlInfo); :
array (26) {[«url»] => string (35) «http://openam.test.com:8080/openam/«[» content_type «] => string (9)» text / html «[» http_code «] => int (200) [» header_size «] => int (391) [» request_size «] => int (498) [«filetime»] => int (-1) [«ssl_verify_result»] => int (0) [«redirect_count»] => int (1) [«total_time»] => float (0.007415) [«namelookup_time»] => float (1.4E-5) [«connect_time»] => float (1.7E-5) [«pretransfer_time»] => float (9.4E-5) [«size_upload»] => float (0) [» size_download «] => float (1626) [» speed_download «] => float (219285) [» speed_upload «] => float (0) [» download_content_length «] => float (1626) [» upload_content_length «] => float (0) [«starttransfer_time»] => float (0.001315) [«redirect_time»] => float (0.006082) [«redirect_url»] => string (0) «» [«primary_ip»] => string (12) » XXX.XX.XX.XX «[» certinfo «] => array (0) {} [» primary_port «] => int (xx) [» local_ip «] => string (12)» XX.XX.XX. XX «[» local_port «] => int (xxx)}
Чтобы быть перенаправленным на страницу регистрации openam, мне нужно было использовать метод заголовка.
<html>
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" href="style.css"/>
<title>UMA forgerock test appli</title>
</head>
<body>
<h2 id="generateCode">Retrieve authorization code</h2>
<form method="post" action="">
<input id="bouton" type="submit" name="generateCode" value="generateCode">
</form>
<?php
if(isset($_POST['generateCode'])) {
$url = "http://openam.test.com:8080/openam/oauth2/authorize";
$params = array(
"response_type" => "code",
"client_id" => xxx,
"realm" => "/openLDAP",
"redirect_uri" => 'http://uma.test.com/umaTestAppli',
"scope" => "profile");
$request_to = $url . '?' . http_build_query($params);
header("Location: " . $request_to);
}
?>
</body>
</html>
Других решений пока нет …