2.具体操作步骤
1、Smartbi 服务器加载LoginToken扩展包(服务器加载LoginToken插件包(点击此处下载),并在第三方系统中编写Java代码,核心代码如下:),扩展包部署请参考:扩展包部署,并在第三方系统中编写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://localhostip:8080port/smartbi/vision/index.jsp?user=demo&password=<上述得到的动态密码>,使得单点登录到smartbi系统。 后续在第三方系统中打开smartbi的资源即可直接打开对应URL,无需在URL中传递用户名和密码。 |
2、加载这个扩展包后,还需要修改 2、加载这个插件包后,还需要修改 Smartbi config.jsp 配置界面上的“用户管理”段的信息。
(1)将“加密类型”设置为:CLASS
(2)将“登录验证类”设置为:smartbi.logintoken.LoginTokenAuthtication
3、动态密码默认60秒有效,可以在【系统选项 > 单点登录 > 单点登录超时设置】中进行配置,单位为毫秒,超过此时间则密码失效。
4、gif演示示例的源码请参考:使用LoginToken扩展包登录使用LoginToken插件包登录.rar
注意 |
---|
注意:若登录不成功,请检查。 1、插件包已正常加载? 1、扩展包已正常加载? 2、登录验证类填写正确? 3、生成token的代码正确(必须要通过拥有系统管理员角色的用户来登录,然后再生成其他用户的登录token,不能给自己生成token并登录)。 4、并且此logintoken2、登录验证类填写正确,填写后是否重启了应用服务器? 3、Chromium 内核浏览器,如Google Chrome、Microsoft Edge新版本的浏览器,需要解决跨域问题,保持同一个域集成测试才能正常登录。 4、生成token的代码正确(必须要通过拥有系统管理员角色的用户来登录,然后再生成其他用户的登录token,不能给admin用户生成token并登录)。 5、并且此logintoken.ext还实现普通用户单独访问smartbi的时候使用用户原本的密码访问,集成的时候可以使用用户原本的密码也可以使用一次性密码,建议是集成的时候使用一次性密码集成访问。 |