tableau Server实现单点登录

开发一个单点登录服务,有一个导航系统,点击导航系统上的tableau图标,进入单点登录服务,验证token,获取用户名密码,然后访问到tableauServer。tableauServer版本为18.3

实现前提:

1.在tableauServer管理端8850端口处,对单点服务所在的服务器进行ip授信

2.在tableauServer安装目录输入以下两条命令,使tableau支持单点登录(需要重启服务)

在tableau服务所在服务器的packages/scripts+版本(本人安装目录是C:\Program Files\Tableau\Tableau Server\packages\scripts.20194.18.1019.1426)目录下,输入一下两行命令:

tsm configuration set -k wgserver.unrestricted_ticket -v true

tsm pending-changes apply

实现方式:(前三步是自己系统的东西或者调用别的服务,和tableau无关,最重要的是获取到登录的用户名)

3.获取用户名,该用户名需要是tableau中存在的用户

拿到用户名之后,调用tableau的API,传入用户名,tableau服务器ip,本机ip,站点(如果是默认站点,可以不传,如果不传,而且好几个站点中都有该用户,tableau登录页面会让用户选择进入哪个站点),获取tableau票据

/**
     * 获取 Tableau Server 票证
     * @param wgserver Tableau Server 的访问地址
     * @param username Tableau Server 的用户名
     * @param clientIp 客户端IP
     * @param target_site 报表所在站点,如果不在默认站点上,则为必需
     * @return 票证
     */
    public static String getTrustedTicket(String wgserver, String username, String clientIp, String target_site) {
        OutputStream output = null;
        BufferedReader input = null;
        try {
            LOGGER.info("========>tableauip:" + wgserver);
            System.out.println("========>tableauip:" + wgserver);
            System.out.println("========>tableauUserName:" + username);
            System.out.println("========>clientIp:" + clientIp);
            URLConnection conn = new URL("http://" + wgserver + "/trusted").openConnection();
            conn.setDoOutput(true);
            conn.setDoInput(true);
            output = conn.getOutputStream();
            String urlParams = "username=" + EncodeUtil.urlEncode(username) + "&client_ip=" + EncodeUtil.urlEncode("127.0.0.1");
            if(StringUtil.isNotEmpty(target_site) && !"Default".equals(target_site)){
                urlParams += "&target_site=" + EncodeUtil.urlEncode(target_site);
            }
            output.write(urlParams.getBytes());
            output.flush();
            input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            StringBuilder writer = new StringBuilder();
            for (String line = null; (line = input.readLine()) != null;) {
                if (writer.length() > MAX_TRUSTED_LIMIT) {
                    throw new Exception("Input too lang!");
                }
                writer.append(line);
            }
            System.out.println("========>ticket:" + writer.toString());
            return writer.toString();
        } catch (Exception e) {
            LOGGER.warn("!", e);
            return "";
        } finally {
            IOUtils.closeQuietly(input);
            IOUtils.closeQuietly(output);
        }
    }

返回的票据ticket如果不是空,且不是-1,可以认为获取票据成功。

然后response.sendRedirect("http://“+”tableauServer的ip"+"/trusted/"+ticket票据+"/#/site");

拼接url进入tableau的不同站点,拼接url方式不同

 

 

//指定站点
// response.sendRedirect(TABLEAU_SERVER_ADDR + "/trusted/" + ticket + "/#/site/指定的站点名称或站点URL");
//默认站点Default站点
//response.sendRedirect("http://"+wgserver+ "/trusted/" + ticket + "/#/");

//自选站点,进入登录之后,自己选择进入哪个站点下
//response.sendRedirect(TABLEAU_SERVER_ADDR + "/trusted/" + ticket + "/#/site");
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
合并,整形和清理数据以使用Tableau Prep进行分析 Tableau Prep更改了组织中传统数据准备的执行方式。通过提供直观,直接的方式来组合,成形和清除数据,Tableau Prep使分析人员和业务用户更容易更快地开始分析。 Tableau Prep由两种产品组成:用于构建数据流的Tableau Prep Builder和用于在组织内调度,监视和管理流的Tableau Prep Conductor。 三个协调的视图使您可以查看行级数据,每一列的配置文件以及整个数据准备过程。根据手头的任务选择要与之交互的视图。 如果要编辑值,请选择并直接编辑。更改您的联接类型,并立即查看结果。每次执行操作时,即使是数百万行的数据,您都可以立即看到数据更改。通过Tableau Prep Builder,您可以自由地重新排序步骤并进行实验,而不会产生任何后果。 使用智能功能解决常见的数据准备挑战。Tableau Prep Builder使用模糊聚类将重复任务(例如按发音分组)转变为一键式操作。 无论是数据库还是电子表格,都可以连接到本地或云中的数据。无需编写代码即可访问,合并和清除不同的数据。Tableau Prep Builder会在可能的情况下智能地将操作推送到数据库,让您利用现有的数据库投资来提高流程执行性能。 留在您的分析流程中。使用Tableau Desktop打开输出或通过Tableau ServerTableau Online与他人共享输出很容易。轻松共享可减少摩擦,并帮助您弥合数据准备和分析之间的鸿沟,以获得更好的业务成果。 使用Tableau Prep Conductor,您可以轻松地在服务器环境中发布和运行流。使用Tableau ServerTableau Online安全共享您的数据源。创建一个环境,组织中的每个人都可以使用准备好的最新数据。 安排您的流量在白天或晚上需要时运行。使您的数据准备过程自动化,以便始终准备好新鲜数据并准备进行分析。 使用当今Tableau Server上可用的相同工具监视流。使用“状态”页面,“管理员视图”和运行历史记录来查看整个服务器上的流的运行状况,以便您可以快速解决任何问题。通过主动警报始终知道您的流量是否健康。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值