Tableau Tickets -POST для получения билета, возвращающего форму входа, а не идентификатор билета

Я вижу, что вокруг StackOverflow не так много экспертов по Tableau, но, возможно, кто-то уже сталкивался с этой проблемой и знает решение. Я полный нуб в Tableau, поэтому, пожалуйста, простите меня, если этот вопрос бессмысленен. Заранее спасибо!

Система

Мы настроили Tableau на сервере, отдельном от веб-сервера. Приложение написано на PHP с использованием стабильной версии CakePHP 2.2.0.

10.0.0.10 - webserver
10.0.0.11 - tableau

Чтобы клиент мог просмотреть отчет, сгенерированный Tableau, мы используем систему доверенной аутентификации, где клиенту выдается URL-адрес с определенным билетом. Затем клиент использует этот билет, чтобы напрямую запросить отчет у сервера таблицы.

Пример:

  1. Клиент ПОЛУЧАЕТhttp://example.com/reports/view/3-который 10.0.0.10 внутри.
  2. Сервер ОТПРАВЛЯЕТ сообщение на адрес 10.0.0.11 и запрашивает у клиента билет для просмотра отчета 3
  3. . Tableau Server отвечает на сообщение числом, например. 987654321.
  4. Сервер отвечает на GET клиента со страницей, включая билет.
  5. Клиент ПОЛУЧАЕТhttp://tableau.example.com/trusted/987654321/view3
  6. Сервер Tableau сверяет IP-адрес клиента с билетом и отвечает HTML-кодом для отчета.

Проблема

Проблема заключается в следующем :Когда код запрашивает номер билета таблицы (шаги 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')

tableau auth login page dump

Благодарю вас!

5
задан Erty Seidohl 6 July 2012 в 21:13
поделиться