页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

代码块
languagexml
firstline1
linenumberstrue
<%@ page contentType="text/html; charset=GBK" import="java.util.*, smartbi.sdk.ClientConnector, smartbi.sdk.service.user.UserManagerService" %>
<%
	request.setCharacterEncoding("GBK"); 

 	String user ="admin"; 
 	String password = "manager"; 
 	String smartbiURL = "http://localhost:18080/smartbi/vision/"; 
 	ClientConnector conn = new ClientConnector("http://localhost:18080/smartbi"); 
	// 建立此连接时,就对smartbi进行了登录
	boolean ret = conn.open(user, password); 
	if (!ret) {
%>
	<script>
 	alert("登录失败!"); 
	</script>
<%
 	} else {
%>
	<script>
 	alert("登录成功!"); 
	// 获取smartbi的cookie,在集成页面需要传递smartbiCookie值,以保证前后台cookie的一致性
	var smartbiCookie = "<%=conn.getCookie()%>"; 
	</script>
<%
	}
%>

注意事项

  • 如果不通过单点登录,那么在集成 Smartbi 资源时必须传入user、password 参数。
  • 如果采用 Smartbi 的服务器端SDK方法进行单点登录,在集成资源时除了可以传递参数user、password之外,还可以单独传递参数smartbiCookie,此参数为从服务器端获取的cookie。获取此值的方法,见下面红色方框内代码。
  • 如果Smartbi是集群部署模式,不能采用方法四进行单点登录,原因是ClientConnector对象是在jsp页面的java代码块中初始化的,其发起对象是第三方系统服务器,而集成资源是浏览器发起的,浏览器在使用该cookie时,不能保证跟服务器一样访问到同一个节点,在没有访问到同一个节点时,其cookie是无效的。

 

单点登录方式对比

上述提供的几种单点登录方式对比如下:

单点登录名称方案简述优点缺点适用系统
LoginToken扩展包登录在第三方系统中编写Java代码,调用Smartbi的服务器端SDK方法进行登录并获取登录Token再使用Token登录token只能使用一次且60秒内有效,不会暴露用户的真实密码,支持集群,安全性高需要加载扩展包并修改登录验证类安全性要求高的系统
JS脚本登录在页面中提交form表单传递用户密码参数登录,并传递参数告知smartbi登录成功和失败跳转的地址集成方式简单用户名和密码暴露在前端,安全性差安全性要求不高的系统
浏览器端SDK登录通过JSLoader加载bof.usermanager.UserService的js方法登录 集成方式较麻烦,用户名和密码暴露在前端,安全性差,需要解决跨域问题安全性要求不高的系统
服务器端 SDK登录在第三方系统中编写 JSP 页面调用 Smartbi 的服务器端 SDK获取Cookie进行登录不会暴露用户的真实密码,安全性高不支持集群部署,不支持从第三方系统链接转到Smartbi系统首页进行登录安全性要求高的系统,只适用于在第三方系统中打开和新建Smartbi资源以及在第三方中打开功能模块进行登录
CAS单点登录将Smartbi接入到统一登录认证平台进行登录安全性高,多系统集成时登录方便需要加载扩展包,需要修改扩展包配置文件和登录验证类用户已有CAS服务器的情况