You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Superset访客令牌返回登录页:仪表盘iframe嵌入问题排查

Superset仪表盘嵌入iframe显示登录页问题排查

我尝试将Superset仪表盘嵌入其他站点的iframe中,两个站点均使用HTTP协议。目前遇到的问题是:iframe始终显示登录页,在无痕窗口中打开生成的URL也同样显示登录页,需要让外部用户以访客身份查看仪表盘。

一、Superset配置参数

PUBLIC_ROLE_LIKE_GAMMA: True
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_SAMESITE = 'LAX'
SESSION_COOKIE_HTTPONLY = True
PUBLIC_ROLE_LIKE: 'Gamma'
HTTP_HEADERS = {'X-Frame-Options': 'ALLOWALL'}

二、后端生成访客Token的代码

myobj = {
  "user": {
    "username": "username",
    "first_name": "*****",
    "last_name": "*****"
  },
  "resources": [{
    "type": "dashboard",
    "id": "1"
  }],
  "rls": []
  
}

login = requests.post(login_url, json={"password": "Password$","provider": "db","refresh": True, "username": "username"})
login_response = json.loads(login.text)

headers = {'Authorization': f"Bearer {login_response['access_token']}"}

csrf = requests.get(csrf_url, headers = headers)

csrf_token = json.loads(csrf.text)['result']
headers_csrf = {
    'accept': 'application/json',
    'Authorization': f"Bearer {login_response['access_token']}",
    'Referer': csrf_url,
    'X-CSRFToken': csrf_token,
}
print(headers_csrf)
guest_token = requests.post(guest_token_url, json = myobj, headers = headers_csrf)

guest_token = json.loads(guest_token.text)['token']
print(guest_token)

final_url = f"http://superset.hookit.korenet.local?token={guest_token}&next=/superset/dashboard/p/jWQx9XBR4Bw/?standalone=true"

三、生成的嵌入URL

http://superset.domain.local?token=*************************.eyJ1c2VyIjp7Imxhc3RfbmFtZSI6IkthbnNhcmEiLCJ1c2VybmFtZSI6InRrYW5zYXJhIiwiZmlyc3RfbmFtZS****************************************Ym9hcmQiLCJpZCI6IjEifV0sInJsc19ydWxlcyI6W10sImlhdCI6MTcwNDY2MDYzNS42ODgwMDYyLCJleHAiOjE3MDQ2NjA5MzUuNjg4MDA2MiwiYXVkIjoiaHR0cDovLzAuMC4wLjA6ODA4MC8iLCJ0eXBlIjoiZ3Vlc3QifQ.t2SZsWg66njR1He20cAcMA9mhkafuCZBqrX58jabqbo&next=/superset/dashboard/p/jWQx9XBR4Bw/?standalone=true

四、问题排查及修复建议

  • 修正配置语法错误:配置中PUBLIC_ROLE_LIKE_GAMMA和PUBLIC_ROLE_LIKE: 'Gamma'重复,且存在冒号赋值(Superset配置需用等号),统一改为PUBLIC_ROLE_LIKE = 'Gamma',删除重复项。
  • 修复URL参数格式:final_url里的仪表盘URL多了一个冗余问号,改为/superset/dashboard/p/jWQx9XBR4Bw?standalone=true,避免参数解析异常。
  • 匹配仪表盘权限ID:访客Token里的resources配置存在不匹配问题:
    • 若用仪表盘数字ID,需确认id: "1"对应目标仪表盘的实际数字ID;
    • 若用仪表盘slug(即URL中的jWQx9XBR4Bw),需将type改为"dashboard-slug",id改为"jWQx9XBR4Bw",否则权限不匹配会跳转到登录页。
  • 调整Cookie跨域配置:将SESSION_COOKIE_SAMESITE = 'LAX'改为SESSION_COOKIE_SAMESITE = 'None',适配iframe跨域场景(HTTP协议下需保持SESSION_COOKIE_SECURE=False)。
  • 修正Token受众配置:解析生成的访客Token可见aud字段为http://0.0.0.0:8080/,与实际Superset域名superset.domain.local不匹配。需在Superset配置中添加GUEST_TOKEN_AUDIENCES = ["http://superset.domain.local"],确保Token受众正确。
  • 检查用户权限:确认生成访客Token的用户拥有can_grant_guest_token权限,否则生成的Token无效。

内容的提问来源于stack exchange,提问作者tkansara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 15:22:48