Pentaho REST API:使用基于Pentaho Cookie的身份验证时出现的问题

时间:2018-11-20 10:21:46

标签: spring-security pentaho restful-authentication

由于为此而苦苦挣扎了一段时间,所以真的很感谢任何帮助...

我已将Pentaho报告加载到Pentaho Server中。这些报告通过iframe调用。

我想做的是让用户仅进行一次身份验证,因此他可以运行其他报告而不必重新进行身份验证。为此,我使用此处记录的基于Pentaho Cookie的身份验证: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 :(得分:1)

在这里回答: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);

?>