2.具体操作步骤
1、Smartbi 服务器加载LoginToken扩展包(点击此处下载),并在第三方系统中编写Java代码,核心代码如下:
// 这个插件的用途是使得在URL中传递密码只能使用一次。
// 集成系统时,首先通过Smartbi的SDK获取用户的动态密码。(密码默认60秒内有效,可在系统选项——单点登录——单点登录超时设置(毫秒)修改密码有效时间)
// 获取动态密码的示例:
ClientConnector conn = new ClientConnector("http://localhost:8080/smartbi");
boolean open = conn.open("admin", "manager"); // 必须以拥有系统管理员角色的用户登录,其他用户登录调用接口获取的token是null
if(open){
InvokeResult result = conn.remoteInvoke("LoginTokenModule", "generateLoginToken", new Object[]{"demo"}); // 用户名
System.out.println(result.getResult());//result.getResult()就是demo用户的token
conn.close();
}else{
//admin用户登录失败
System.out.println("登录失败");
}
// 得到密码后需要先单点登录:可以在第三方首页中添加一个隐藏的iframe,使用这样的链接打开Smartbi的首页:http://localhost:8080/smartbi/vision/index.jsp?user=demo&password=<上述得到的动态密码>,使得单点登录到smartbi系统。
后续在第三方系统中打开smartbi的资源即可直接打开对应URL,无需在URL中传递用户名和密码。
2、加载这个扩展包后,还需要修改 Smartbi config.jsp 配置界面上的“用户管理”段的信息。
(1)将“加密类型”设置为:CLASS
(2)将“登录验证类”设置为:smartbi.logintoken.LoginTokenAuthtication
3、动态密码默认60秒有效,可以在【系统选项 > 单点登录 > 单点登录超时设置】中进行配置,单位为毫秒,超过此时间则密码失效。
4、gif演示示例的源码请参考:使用LoginToken扩展包登录.rar