Я вижу, что вокруг StackOverflow не так много экспертов по Tableau, но, возможно, кто-то уже сталкивался с этой проблемой и знает решение. Я полный нуб в Tableau, поэтому, пожалуйста, простите меня, если этот вопрос бессмысленен. Заранее спасибо!
Система
Мы настроили Tableau на сервере, отдельном от веб-сервера. Приложение написано на PHP с использованием стабильной версии CakePHP 2.2.0.
10.0.0.10 - webserver
10.0.0.11 - tableau
Чтобы клиент мог просмотреть отчет, сгенерированный Tableau, мы используем систему доверенной аутентификации, где клиенту выдается URL-адрес с определенным билетом. Затем клиент использует этот билет, чтобы напрямую запросить отчет у сервера таблицы.
Пример:
Проблема
Проблема заключается в следующем :Когда код запрашивает номер билета таблицы (шаги 2 и 3 выше ), сервер Tableau отвечает страницей аутентификации, а не идентификатором билета. Если я закомментирую параметр «целевой _сайт» в массиве $postdata, таблица не ответит страницей входа, а вместо этого просто скажет «-1».
Код PHP для создания доверенного URL-адреса:
Auth->user();
$email = $email['Email']; //This email is registered as a Tableau user!
$postdata = http_build_query(
array(
'username' => $email,
'target_site' => 'oursite', //If I comment this line out, Tableau no longer returns an auth page and instead simply returns "-1"
'client_ip' => $_SERVER['REMOTE_ADDR']
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$ticket = file_get_contents('http://10.0.0.11/trusted/', false, $context);
if($ticket > 0) {
return 'http://tableau.example.com/t/rg/trusted/'. $ticket. '/'.$view. '?:embed=yes&:comments=no&:toolbar=yes';
} else {
echo 'failure'; //debug
print_r($ticket); //debug - this prints out the auth page
return false;
}
}
Любая помощь будет принята с благодарностью! Как я уже говорил, я полный нуб в Tableau:)
Изображение возвращенного html-кода для входа,выгружается на страницу с помощьюprint_r('ticket')
Благодарю вас!