页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

1. 概述

1.1. 功能介绍

用于第三方系统集成Smartbi中单点登录加密传输用户信息,安全系数更高,不会暴露用户的真实密码。

1.2. 原理

  1. 第三方系统使用密钥对用户登录信息进行AES或DES加密来形成token,并传递到Smartbi集成连接中
  2. Smartbi服务器拦截到请求,对token信息进行解析和校验,
    1. 如果成功解析出用户信息并校验成功,则将用户设置为登录状态,再重定向到对应地址。
    2. 如果未成功解析到用户信息,则跳转到登录界面。

1.3. 名词释义

token:token是客户端使用密钥加密用户登录信息形成一串字符串,以作客户端进行请求的一个令牌。一串字符串,以作客户端进行请求的一个令牌

令牌:同tocken

2. 功能详解

2.1.

...

tocken登录配置

访问Smartbi的Config配置界面 (地址为 http://IP:PORT/smartbi/vision/config.jsp),配置令牌登录的信息:密钥、超时时间等,配置令牌/tocken登录的信息:密钥、超时时间等

配置项说明
密钥

用来解密token信息。客户端需要用密钥来进行加密用户信息。密钥为默认空,表示不支持令牌登录这种方式。

密钥由用户自定义输入8位或16位字符串,后续生成令牌信息时需要使用相同的密钥

注意
密钥要求:密钥长度固定为8位(DES)或16位(AES)。


令牌超时时间

token有效时间。当【服务器解析请求时间戳 - token的生成的时间戳 > 超时设置 】成立时,则代表token已超时,不能进行登录;

需要校验密码

设置token中是否要包含密码,使用密码来进行登录。

  • 勾选  ,则在校验token信息时,解析出密码,再使用账号密码登录;
  • 勾选  ,则直接将用户设置为登录状态。

2.2. 第三方应用生成令牌Token

第三方应用使用   smartbi-CryptoUtil.jar  的工具类的encrypt方法加密token获得令牌,提供2种不同的加密算法;产品会基于加密串的特征使用不同的解密算法。

...

代码块
languagejs
linenumberstrue
  String secretKey = "12345678";// 密钥
  Long timestamp =  new java.util.Date().getTime();// 必需是毫秒数的时间戳
  String userName = "admin";// 用户名,可基于业务动态获取
  String password = "admin";// 用户密码(可选),可基于业务动态获取

  //准备登录的基础信息,password可选,其它的必选按如下方式组装好
  String loginInfo= "{\"username\":\"" + userName + "\",\"password\":\"" + password + "\",\"timestamp\":" + timestamp + "}";
  String token	= null;
  try {
	//生成token
    token = CryptoUtil.encrypt(loginInfo, secretKey);
  } catch(Exception e) {
    //
  }

2.3. 使用token登录

在跳转或打开Smartbi的连接上添加tocken:http://ip:port/smartbi/vision/loginByToken?smartbiToken=上一章节生成的token&targetPath=目标跳转链接及其参数,即可免密登录

...