获取Tableau凭证,实现报表在第三方的免登陆。分为三步
第一步:在Tableau服务器上命令行设置授信白名单
配置白名单
cd C:\Program Files\Tableau\Tableau Server\bin
tabadmin stop
//可以配置多个IP,也可以只配置一个;多个时用英文逗号分开且增加一空格
tabadmin set wgserver.trusted_hosts "10.88.233.64, 10.88.158.155, 10.88.233.28, 10.88.233.9, 10.88.131.115"
tabadmin config
tabadmin start
第二步:这里使用java发送请求,其他方式也可:如php。将返回值返回客户端页面
/**
* This method is getting Tableau server ticket
* @param wgserver Tableau Server IP
* @param user Tableau Server Account
* @param site Tableau Server site
* @return ticket Tableau Report API trusted
* @throws ServletException
*/
private String getTrustedTicket(String wgserver, String user,String site)
throws ServletException {
OutputStreamWriter out = null;
BufferedReader in = null;
try {
// Encode the parameters
StringBuffer data = new StringBuffer();
data.append(URLEncoder.encode("username", "UTF-8"));
data.append("=");
data.append(URLEncoder.encode(user, "UTF-8"));
data.append("&");
data.append(URLEncoder.encode("target_site", "UTF-8"));
data.append("=");
data.append(URLEncoder.encode(site, "UTF-8"));
// Send the request
URL url = new URL("http://" + wgserver + "/trusted");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
out = new OutputStreamWriter(conn.getOutputStream());
out.write(data.toString());
out.flush();
// Read the response
StringBuffer rsp = new StringBuffer();
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ( (line = in.readLine()) != null) {
rsp.append(line);
}
return rsp.toString();
} catch (Exception e) {
throw new ServletException(e);
}
finally {
try {
if (in != null) in.close();
if (out != null) out.close();
}
catch (IOException e) {}
}
}
第三步:页面嵌入报表路径格式
var url = http://TableauIP:port/trusted/ticket/t/报表路径
说明:报表路径从报表的共享获取,截取/t/之后的地址。
第一步:在Tableau服务器上命令行设置授信白名单
配置白名单
cd C:\Program Files\Tableau\Tableau Server\bin
tabadmin stop
//可以配置多个IP,也可以只配置一个;多个时用英文逗号分开且增加一空格
tabadmin set wgserver.trusted_hosts "10.88.233.64, 10.88.158.155, 10.88.233.28, 10.88.233.9, 10.88.131.115"
tabadmin config
tabadmin start
第二步:这里使用java发送请求,其他方式也可:如php。将返回值返回客户端页面
/**
* This method is getting Tableau server ticket
* @param wgserver Tableau Server IP
* @param user Tableau Server Account
* @param site Tableau Server site
* @return ticket Tableau Report API trusted
* @throws ServletException
*/
private String getTrustedTicket(String wgserver, String user,String site)
throws ServletException {
OutputStreamWriter out = null;
BufferedReader in = null;
try {
// Encode the parameters
StringBuffer data = new StringBuffer();
data.append(URLEncoder.encode("username", "UTF-8"));
data.append("=");
data.append(URLEncoder.encode(user, "UTF-8"));
data.append("&");
data.append(URLEncoder.encode("target_site", "UTF-8"));
data.append("=");
data.append(URLEncoder.encode(site, "UTF-8"));
// Send the request
URL url = new URL("http://" + wgserver + "/trusted");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
out = new OutputStreamWriter(conn.getOutputStream());
out.write(data.toString());
out.flush();
// Read the response
StringBuffer rsp = new StringBuffer();
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ( (line = in.readLine()) != null) {
rsp.append(line);
}
return rsp.toString();
} catch (Exception e) {
throw new ServletException(e);
}
finally {
try {
if (in != null) in.close();
if (out != null) out.close();
}
catch (IOException e) {}
}
}
第三步:页面嵌入报表路径格式
var url = http://TableauIP:port/trusted/ticket/t/报表路径
说明:报表路径从报表的共享获取,截取/t/之后的地址。