Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

    Code Block
    languagejava
    // 这个插件的用途是使得在URL中传递密码只能使用一次。
    // 集成系统时,首先通过Smartbi的SDK获取用户的动态密码。(密码60秒内有效,可在LoginToken.ext\META-INF\aplicationContext.xml修改timeout属性)
       
    // 获取动态密码的示例:
    ClientConnector conn = new ClientConnector("http://localhost:8080/smartbi");
    boolean open = conn.open("admin", "manager"); //
    必须以admin用户登录,其他用户登录调用接口获取的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中传递用户名和密码。

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


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

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

...