目录 |
---|
1. 概述
1.1. 功能介绍
用于第三方系统集成Smartbi中单点登录加密传输用户信息,安全系数更高,不会暴露用户的真实密码。
1.2. 原理
- 第三方系统使用密钥
...
- 对用户登录信息进行AES或DES加密来形成token,并传递到Smartbi集成连接中
- Smartbi服务器拦截到请求,对token信息进行解析和校验,
- 如果成功解析出用户信息并校验成功
...
- ,则将用户设置为登录状态,再重定向到对应地址。
- 如果未成功解析到用户信息,则跳转到登录界面。
1.3. 名词释义
token:token是客户端使用密钥加密用户登录信息形成的
...
一串字符串,以作客户端进行请求的一个令牌。
令牌:同token
2. 功能详解
2.1.
...
token登录配置
访问Smartbi的Config配置界面 (地址为 http://IP:PORT/smartbi/vision/config.jsp)
...
,配置令牌/totken登录的信息:密钥、超时时间等
配置项 | 说明 | ||
---|---|---|---|
密钥 | 用来解密token信息。客户端需要用密钥来进行加密用户信息。密钥为默认空,表示不支持令牌登录这种方式。 密钥由用户自定义输入8位或16位字符串,后续生成令牌信息时需要使用相同的密钥
|
...
| |
令牌超时时间 | token有效时间。当【服务器解析请求时间戳 - token的生成的时间戳 > 超时设置 】成立时,则代表token已超时,不能进行登录; |
需要校验密码 | 设置token中是否要包含密码,使用密码来进行登录。
|
2.2.
...
第三方应用生成令牌Token
第三方应用使用 smartbi-CryptoUtil.jar 的工具类的encrypt方法加密token获得令牌,提供2种不同的加密算法;产品会基于加密串的特征使用不同的解密算法。
- AES-GCM加密:smartbi.crypto.CryptoUtil.encrypt(loginInfo, 密钥)。
- DES加密:CryptoUtil.encrypt(AlgorithmType.DES, loginInfo, 密钥)。
- AES-GCM解密:smartbi.crypto.CryptoUtil.decrypt(token, 密钥)。
- DES解密:CryptoUtil.decrypt(AlgorithmType.DES, token, 密钥)。
参考示例:
注意 |
---|
token为json格式,其中时间戳在java语法中指new java.util.Date().getTime()获取的毫秒数,如1648519473246,不需要双引号,其他部分的双引号不可以缺少 |
使用“smartbi-DESUtil.jar”的工具类的encrypt方法来加密token来获得令牌,其中加密类是:DESCryption
该类提供加密、解密方法:
...
代码块 | ||||
---|---|---|---|---|
|
...
{
"timestamp":时间戳,
"username":"用户名",
"password":"可选,用户密码"
}
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的连接上添加token:http://ip:port/smartbi/vision/loginByToken?smartbiToken=
...
上一章节生成的token&targetPath=
...
目标跳转链接及其参数,即可免密登录
链接格式解析 | 作用 |
---|---|
ip:port | Smartbi系统服务器地址及端口 |
smartbiToken |
...
2.2章节生成的令牌token。
| ||||||
targetPath | 目标跳转界面,当token校验结束后,直接重定向到该地址,只接受相对路径。
|
...
常用集成界面示例:
- Web端首页:
...
|
...
|
代码块 |
---|
http://localhost:8080/smartbi/vision/loginByToken?smartbiToken=54f296bd4649...&targetPath=openresource.jsp%3Fresid%3DI2c94ea86298cbe6c01298cfd9ba900fa |
代码块 |
---|
http://localhost:8080/smartbi/vision/loginByToken?smartbiToken=54f296bd4649...&targetPath=openmodule.jsp%3Fid%3DAnalysis%26showbanner%3Dfalse |
代码块 |
---|
http://localhost:8080/smartbi/vision/loginByToken?smartbiToken=54f296bd4649...&targetPath=createresource.jsp%3Frestype%3DVISUAL |
- 移动端首页:
代码块 |
---|
http://localhost:8080/smartbi/vision/loginByToken?smartbiToken=54f296bd4649b0d41c35..&targetPath=mobileX%2Findex |
- 移动端集成资源:
...
|
4. 示例
web项目使用令牌登录集成Smartbi:使用令牌登录示例.zip
注:该示例只对V11版本2023-10-19之后打包的日期才有效,之前的版本可以沿用V10的示例 V10令牌token单点登录