简介 #
SmartChart 的单点登录(SSO)允许用户从第三方系统通过加密 token 直接跳转登录到 SmartChart 平台,无需再次输入用户名密码。Token 采用 SHA1 算法基于密钥、时间戳和用户名生成,有效防止伪造。与单页面嵌入不同,SSO 登录后用户可以访问整个平台,而非仅限于指定报表。
单点登录的方式与smartchart进行对接嵌入 #
'/echart/smart_login?id=xxx&stamp=xxx&token=xxx&url=/'
'''
参数说明:
id: 用户名(在smartchart平台中管理)
stamp: 时间戳(1970年1月1日到生成时间的毫秒数)
token: 采用sha1加密, token=SHA1(链接秘钥+stamp+id)
请在安装smartchart的这台机器上设定环境变量SMART_KEY = 链接秘钥
url: 登录成功后跳转链接
'''
Python后台样列: #
import time
import hashlib
import os
"""
参数说明:
id: 用户名(在smartchart平台中管理)
stamp: 时间戳(1970年1月1日到生成时间的毫秒数)
token: 采用sha1加密, token=SHA1(链接秘钥+stamp+id)
url: 登录成功后跳转链接
"""
SMART_CHART_URL = 'http://127.0.0.1:8000'
LOGIN_URL = SMART_CHART_URL + '/echart/smart_login?id={id}&stamp={stamp}&token={token}&url={url}'
SMART_KEY = 链接秘钥
def get_smarturl(username, url='/'):
stamp = int(time.time() * 1000)
id = username
res = SMART_KEY + str(stamp) + id
token = hashlib.sha1(res.encode('utf-8')).hexdigest()
LOGIN_DICT = {
"id": id,
"stamp": stamp,
"token": token,
"url": url
}
# 拼接好的url,直接访问
visit_url = LOGIN_URL.format(**LOGIN_DICT)
return visit_url