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

Spring security Pentaho REST API:使用基于Pentaho Cookie的身份验证时出现问题,spring-security,pentaho,restful-authentication,Spring Security,Pentaho,Restful Authentication,已经为此挣扎了一段时间,所以非常感谢您的帮助 我已将Pentaho报告加载到Pentaho服务器。这些报告通过Iframe调用 我试图做的是让用户只进行一次身份验证,这样他就可以运行其他报告,而无需重新验证。为此,我使用基于Pentaho Cookie的身份验证,如下所述: 我的问题是: 1) 我编写了一个小php脚本,将POST请求发送到/pentaho/j_spring_security_check。脚本不会返回任何错误,但不会按预期将我重定向到主页 <?php $data = arr

已经为此挣扎了一段时间,所以非常感谢您的帮助

我已将Pentaho报告加载到Pentaho服务器。这些报告通过Iframe调用

我试图做的是让用户只进行一次身份验证,这样他就可以运行其他报告,而无需重新验证。为此,我使用基于Pentaho Cookie的身份验证,如下所述:

我的问题是: 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) 我尝试直接在浏览器“”中键入,得到“login_error=1”结果,同时登录和密码都正确(预期行为将重定向到主页)

这是我第一次使用RESTAPI,所以我可能做错了

非常感谢

回答如下:

我错过了重复使用那块饼干的步骤

此外,使用“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);

?>