Ich mache Tableau-Integration mit Web-Projekt mit Java Script API. Ich habe meine IP in Tableau Server mit commnad konfiguriert: tabadmin set wgserver.trusted_hosts "" und entsprechende Befehle. Aber ich bin nicht in der Lage, das Ticket zu bekommen, endete mit -1. Ich habe alle Konfigurationsschritte befolgt.Tableau Integration mit Web-Projekt
public class TableauServlet extends javax.servlet.http.HttpServlet {
private static final long serialVersionUID = 1L;
public TableauServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
final String user = "raghu";
final String wgserver = "103.xxx.xxx.xx";
final String dst = "views/Regional/College?:iid=1";
final String params = ":embed=yes&:toolbar=yes";
String ticket = getTrustedTicket(wgserver, user, request.getRemoteAddr());
if (!ticket.equals("-1")) {
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
response.setHeader("Location", "http://" + wgserver + "/trusted/" + ticket + "/" + dst + "?" + params);
}
else
// handle error
throw new ServletException("Invalid ticket " + ticket);
}
// 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)
private String getTrustedTicket(String wgserver, String user, String remoteAddr)
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("client_ip", "UTF-8"));
data.append("=");
data.append(URLEncoder.encode(remoteAddr, "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) {}
}
}
}
Danke für Ihre Antwort @merawalaid. Ich habe den Zielparameter jetzt im get HTML-Seite als Ticket wie {
Humm ... es sieht so aus, als ob der Tableau-Server Ihnen kein vertrauenswürdiges Token gegeben hat und versucht, Sie auf seine Login-Seite umzuleiten. Wenn ich an Ihrem Platz wäre, würde ich "client_ip" einfach loswerden, bis ich den grundlegenden Token-Mechanismus funktioniere. Außerdem würde ich prüfen, ob der Benutzer 'raghu' den Zugriff auf den Tableau-Server auf die von Ihnen angegebene 'target_site' konfiguriert hat. Aus Code-Sicht kann ich nichts falsch finden mit dem, was Sie tun, ich habe sehr ähnlichen Code arbeiten. Also muss das Problem wegen eines Konfigurationsproblems sein. – merawalaid
eine Sache, die ich vergessen zu erwähnen, ist Tableau-Server ist in einem anderen Netzwerk und Webserver ist in meinem lokalen.Im versucht, auf Tableau-Server von meinem lokalen zugreifen.Ist es irgendwelche Redirect-Einrichtung? – veera