API-интерфейс Pentaho REST: проблема при использовании аутентификации на основе файлов cookie Pentaho - PullRequest
0 голосов
/ 20 ноября 2018

Некоторое время я боролся с этим, поэтому любая помощь действительно приветствуется ...

У меня есть отчеты Pentaho, загруженные на сервер Pentaho.Эти отчеты вызываются через Iframe.

Я пытаюсь сделать так, чтобы пользователь проходил аутентификацию только один раз, чтобы он мог запускать другие отчеты без повторной аутентификации.Для этого я использую аутентификацию на основе файлов cookie Pentaho, как описано здесь: https://help.pentaho.com/Documentation/8.0/Developer_Center/REST_API

Мои проблемы: 1) Я написал небольшой скрипт php, который отправляет запрос POST в / pentaho / j_spring_security_check.Скрипты не возвращают никаких ошибок, но не перенаправляют меня на домашнюю страницу, как ожидалось.

<?php
$data = array("j_username"=>"admin", "j_password"=>"password", 
"locale"=>"en_US");
$string = http_build_query($data);
echo $string;
$ch = 
curl_init("http://localhost:8080/pentaho/j_spring_security_check");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $string);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo $ch;
$return = curl_exec($ch);
echo $return;
if (curl_errno($ch)) {
   print curl_error($ch);
}
curl_close($ch);
?>  

2) Я пытался набирать текст прямо в браузере "http://localhost:8080/pentaho/j_spring_security_check?j_username=admin&j_password=admin", Я получаю" login_error =1 ", в то время как логины и пароли верны (ожидаемое поведение должно быть перенаправлено на домашнюю страницу).

Я впервые использую REST API, поэтому я могу ошибаться.

Большое спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

ответил здесь: https://community.hitachivantara.com/thread/14811-pentaho-rest-api-issue-when-using-pentaho-cookie-based-authentication

Мне не хватало шага, на котором я бы повторно использовал этот файл cookie.

Кроме того, использование «curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true)» помогло мне понять ошибки в моем сценарии и устранить их.

Правильный сценарий:

<?php
$data = array("user"=>"admin", "password"=>"admin");
// $string = http_build_query($data);
// echo $string;

$cookie_jar = tempnam('/Users/pierre/Vrac','cookie');
    if (!file_exists(realpath($cookie_jar))) touch($cookie_jar);

$ch = curl_init("http://localhost:8080/pentaho/j_spring_security_check? 
j_username=admin&j_password=admin&locale=en_US");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);

//echo $ch;
$return = curl_exec($ch);

echo "execution report";
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);
curl_setopt($ch, CURLOPT_URL,'http://localhost:8080/pentaho/api/repos/:public:IframeDossier:IframeTest.prpt/viewer?label=fin');
$page = curl_exec($ch);
echo $page;


curl_close($ch);

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...