第三方系统集成DMP单点登录查看报告
在DMP系统内创建报告,并将报告采用“第三方授权”的方式发布,然后将报告通过OpenAPI接口集成到第三方系统站点里,第三方系统可通过单点登录的方式查看报告
一、查看报告流程图
二、接口API
1、获取报告列表(OpenAPI接口):
第三方OpenAPI独立部署环境:第三方OpenAPI独立部署域名
接口(Path): /openapi/dashboard/list
请求方法(Method): GET
请求头(Headers):
X-TENANT: 项目代码/租户代码
请求参数(QueryString):
apikey: OpenAPI接口调用密钥(DMP-ADMIN中的项目管理中项目信息的OpenApi Key)
返回响应(Response):
{
"result":true,
"msg":"ok",
"data":[
{
"id":"39e42f2a-e815-383f-904b-c2e437ac0756",
"theme":"tech_blue",
"data_report_id":null,
"name":"报告名称",
"type":"FILE",
"parent_id":"39e42e1f-f4e2-1fb0-7104-8c020d676803",
"level_code":"0637-0004-",
"icon":"",
"platform":"pc",
"is_multiple_screen":0,
"status":0,
"user_group_id":"00000000-0000-0000-1111-000000000000",
"default_show":0,
"cover":"",
"description":"",
"layout_type":"自由布局",
"share_secret_key":"",
"layout":"{"ratio":"16:9","mode":"free","screenHeader":"show","width":1440,"platform":"pc","height":810,"toolbar":"show"}",
"scale_mode":0,
"background":"{"image":"","color":"transparent","show":true,"size":"stretch"}",
"rank":null,
"build_in":0,
"biz_code":"4b7ef4012d874190b905ae2b56888108",
"border":null,
"type_access_released":0,
"type_selector":1,
"refresh_rate":null,
"created_on":"2018-01-22 16:31:07",
"created_by":"test",
"modified_on":"2019-04-20 11:21:55",
"modified_by":"cc",
"grid_padding":"{"container_padding":[10,10],"chart_background":"transparent","chart_margin":[10,10],"chart_padding":[15,15,15,15]}",
"create_type":1,
"new_layout_type":0,
"distribute_type":null,
"is_show_mark_img":0
}
]
}
2、单点登录查看单个报告(DMP接口)
报告必须要采用 “第三方授权” 发布后才可以正常访问,否则会验权未登录重定向到DMP登录界面
查看单个报告(DMP接口):
第三方DMP独立部署环境:第三方DMP独立部署域名
接口(Path): /api/dashboard/login
请求方法(Method): GET
请求参数(QueryString):
token: 单点登录报告认证token,下面提供Python实现token示例
返回响应(Response):
成功:跳转到目标单个报告页面
失败:
{
"result": false,
"msg": "失败提示信息",
"data": "######",
}
常见问题:提示未登录,报告必须是第三方授权方式发布
Python实现token示例:
import jwt
import time
import base64
# jwt加密密钥
jwt_secret = 'XXXXXX'
# jwt加密算法
jwt_alg = 'HS256'
# jwt过期时间,建议过期时间设置为60秒
exp = int(time.time()) + 60
# 用户登录payload数据
payload = {
"project_code": 租户code, # (必传参数)租户CODE,用于DMP平台识别当前访问的用户
"user_name": 用户名, # (非必传参数)第三方系统的用户名,可用于DMP平台某些业务场景(eg.报告的水印显示)
"user_account": 用户账号, # (非必传参数)DMP平台用户账号,用于用户账号模式访问报告
"user_auth": "view,download", # (必传参数)对报告的相关访问权限
"biz_code": 单个报告的biz_code, # (非必传参数)从报告列表报告详细信息获取,用于biz_code模式访问报告
"exp": 过期截止时间exp # (必传参数)过期时间
}
# 备注1:"user_account"与"biz_code"参数需要至少传入一个,否则接口响应将返回错误
# 备注2:payload内所有参数会在请求响应成功后写入cookie,cookie名为"external_params",用于跳转到报告浏览页的权限校验
# 生成的jwt标准token
jwt_token = jwt.encode(payload, jwt_secret, jwt_alg)
# 对jwt标准token进行base64生成最终: access_token
access_token = base64.b64encode(jwt_token).decode('utf-8')