...
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
<%@ 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> <% } %> |
方法五:如果已有CAS服务器,要求进行CAS统一认证,可进行cas单点登录。参考:https://history.wiki.smartbi.com.cn/pages/viewpage.action?pageId=27001768
注意事项
- 如果不通过单点登录,那么在集成 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服务器的情况 |