【问题标题】:responsive iframe + Tableau trusted authentication响应式 iframe + Tableau 可信身份验证
【发布时间】:2013-11-25 16:14:41
【问题描述】:

我在 PHP Web 应用程序中嵌入了 Tableau 视图。我们一直在 Tableau Server 中使用启用的来宾帐户,该帐户基本上允许匿名身份验证。在这种方案下,响应式嵌入非常简单,并且使用 javascript 解决方案(例如 fitvids.js/fluidvids.js)运行良好。

最近,我们对受信任的身份验证进行了更改,该身份验证将特定用户从 Web 应用程序传递到 Tableau Server,生成唯一的一次性受信任票证,并呈现视图。使用标准的固定嵌入,一切都按预期工作。但是,在实施 fitvids.js 或 fluidvids.js 时,我们会遇到可怕的 Tableau 错误:Could not locate unexpired trusted ticket

我最好的猜测是故障是:

  1. 用于票证生成和 url 创建的 PHP
  2. javascript 的处理顺序(最有可能)
  3. Tableau Server 限制

仅 css 的解决方案将不起作用,因为 iframe 中的内容是动态的。

供参考,这里是有问题的php:

<?php
/**
 * Implementation of Tableau trusted auth for php
 *
 * http://onlinehelp.tableausoftware.com/v8.1/server/en-us/trusted_auth_webURL.htm
 */
function get_trusted_url($user, $server, $view_url, $site) {
  $params = ':embed=yes&:toolbar=yes:tabs=no';
  $ticket = get_trusted_ticket($server, $user, $_SERVER['REMOTE_ADDR'], $site);

  return "http://$server/trusted/$ticket/$view_url?$params";
}

// Note that this function requires the pecl_http extension.
// See: http://pecl.php.net/package/pecl_http

// the client_ip parameter isn't necessary to send in the POST unless you have
// wgserver.extended_trusted_ip_checking enabled (it's disabled by default)
function get_trusted_ticket($wgserver, $user, $remote_addr, $site) {
  $params = array(
    'username' => $user,
    'client_ip' => $remote_addr,
    'target_site' => $site
  );

  return http_parse_message(http_post_fields("http://$wgserver/trusted", $params))->body;
}
?>

还有一个嵌入示例:

<iframe src="<?php echo get_trusted_url($user,$server,$view_url,$site);?>"></iframe>

【问题讨论】:

  • 听起来像 API 问题,也许您应该联系 tableausoftware.com 的支持人员?

标签: php jquery iframe responsive-design tableau-api


【解决方案1】:

运行 Fiddler 跟踪,表明问题出在 javascript 执行上。

固定比例嵌入,对可信票证url有单一请求:

 1. /content/demo-tableau-trusted
 2. /trusted/Sz1y2Beu6Wr2EZnIg37-7oPm/t/education/views/Attendance/AttendanceDashboard?:embed=yes&:toolbar=yes:tabs=no
 3. /t/education/views/Attendance/AttendanceDashboard?:embed=yes&:toolbar=yes:tabs=no

然后使用 javascript 解决方案(在本例中为 FluidVids),对同一个可信票证 url 有两个请求:

 1. /content/demo-tableau-trusted
 2. /trusted/eg93TnSj0SQuhoCdHJbh0t94/t/education/views/Attendance/AttendanceDashboard?:embed=yes&:toolbar=yes:tabs=no
 3. /trusted/eg93TnSj0SQuhoCdHJbh0t94/t/education/views/Attendance/AttendanceDashboard?:embed=yes&:toolbar=yes:tabs=no

【讨论】:

  • 在 Fiddler 的什么地方可以看到这个?我看不到对一个 URL 的受信任 URL 发出任何请求,尽管它对另一个 URL 工作正常,唯一的区别是报告名称
猜你喜欢
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 2020-10-06
相关资源
最近更新 更多