Page tree
Skip to end of metadata
Go to start of metadata

说明

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

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

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

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

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

 

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

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

  •  方法一:Smartbi服务器加载LoginToken扩展包(点击此处下载),并在第三方系统中编写Java代码,调用Smartbi的服务器端SDK方法进行登录并生成登录Token,实现单点登录。

    加载这个扩展包需要将Smartbi服务器config页面用户管理下加密类型设置为CLASS,登录验证类设置为smartbi.logintoken.LoginTokenAuthtication


    注:若登录不成功,请检查1、扩展包已正常加载?2、登录验证类填写正确?3、生成token的代码正确(通过管理员登录生成其他用户的登录token,不能给admin用户生成token并登录)。

          并且此logintoken.ext还实现普通用户单独访问smartbi的时候使用用户原本的密码访问,集成的时候可以使用用户原本的密码也可以使用一次性密码,建议是集成的时候使用一次性密码集成访问。 

  • 方法二:在第三方系统中编写 JS 脚本实现登录,假设目标登录页面为http://localhost:18080/smartbi/vision/index.jsp,登录脚本如下所示。

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

 

  • 方法四:在第三方系统中编写 JSP 页面调用 Smartbi 的服务器端 SDK 进行登录。此方式适用于在第三方系统中打开Smartbi资源、在第三方系统中新建Smartbi资源 和 在第三方中打开功能模块,而不适用于从第三方系统链接转到Smartbi。具体操作步骤如下:

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")%>">。

注意事项

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