说明

在系统集成中,用户为了统一门户,一般都会要求多个系统实现单点登录。

单点登录一般有几个步骤:

1、用户信息同步,用户信息同步有多种方式,可参考 与第三方系统用户集成

2、第三方系统通过连接等方式打开smartbi并传递用户名等信息,有多种方式,该文档详细说明。

3、smartbi实现第三方的登录验证方法,请参考 与第三方系统用户集成#与第三方系统用户集成-使用第三方系统的用户验证4、使用第三方系统的用户验证 示例文档有CAS单点登录windows域登录验证。 

 

第三方系统单点登录时需要做的设置说明

可以通过以下四种方法之一,在第三方系统中单点登录到 Smartbi 系统。

<form method="POST" id="formLogin" onsubmit="go();return false">
	<p>用户:<input type="text" name="user" size="20" value="admin"></p>     
	<p>密码:<input type="text" name="password" size="20" value="manager"></p> 
 	<p>登录成功后的跳转地址:<input type="text" name="surl" size="20" value="manager"></p> 
 	<p>登录失败后的跳转地址:<input type="text" name="furl" size="20" value="manager"></p>     
	<p><input type="submit" value="确定" name="B1"></p> 
</form>
 
function go() 
{
	formLogin.action = "http://localhost:18080/smartbi/vision/index.jsp"; 
    formLogin.user.value = "admin"; 
 	formLogin.password.value = "manager";  	
 	formLogin.surl.value = " "; // 登录成功后的跳转地址;若该地址为外部链接,需要包含协议名,如以 http:// 开头
    formLogin.furl.value = " "; // 登录失败后的跳转地址
    formLogin.submit(); 
    return true; 
}

前端登录后,需要有相应的注销代码

<form method="POST" id="formLogout" onsubmit="go();return false">
 	<p>注销成功后的跳转地址:<input type="text" name="surl" size="20" value="manager"></p> 
 	<p>注销失败后的跳转地址:<input type="text" name="furl" size="20" value="manager"></p>     
	<p><input type="submit" value="确定" name="B1"></p> 
</form>
 
function go() 
{
	formLogout.action = "http://localhost:18080/smartbi/vision/logout.jsp"; 
 	formLogout.surl.value = " "; // 注销成功后的跳转地址 为空时自动跳转到smartbi的index.jsp
    formLogout.furl.value = " "; // 注销失败后的跳转地址 为空时自动跳转到smartbi的index.jsp
    formLogout.submit(); 
    return true; 
}

 

1、参考开发接口中的服务端SDK方法 的使用步骤,把相关的 jar 包加载到您的 Java 项目的 classpath 中。

2、编写登录代码,调用 SDK 中的相应方法。

3、可以将得到的smartbiCookie 作为参数传入openresource.jsp等页面,必须转码后再传递,例如<a href="http://server:8080/smartbi/vision/openresource.jsp?resid=<资源ID>&smartbiCookie=<%=java.net.URLEncoder.encode(conn.getCookie(), "UTF-8")%>">。

<%@ 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>
<%
	}
%>

注意事项