为跨VM的REST请求添加请求头解决Qlik仪表板窄播登录问题
解决Qlik仪表板在窄播系统免登录访问的方案
方案1:Qlik端配置信任IP白名单
因为两台VM均为本地部署,直接在Qlik服务器上配置信任窄播VM的IP地址,允许来自该IP的请求跳过AD认证:
- 登录Qlik管理控制台,进入虚拟代理配置页面
- 创建或编辑对应仪表板的代理规则,将窄播VM的IP添加至信任客户端IP列表
- 开启该代理的匿名访问权限,并绑定目标仪表板的访问权限组,确保仅来自该IP的请求能匿名访问指定仪表板
方案2:部署反向代理自动添加请求头
在两台VM之间(或窄播VM本地)部署Nginx作为反向代理,自动为转发的请求追加认证头:
- 在代理VM安装Nginx,修改
nginx.conf添加如下配置:server { listen 80; server_name proxy-qlik.local; location /target-dashboard/ { proxy_pass http://[Qlik-VM-IP]/target-dashboard/; # 根据Qlik认证要求添加请求头,示例为Bearer令牌格式 proxy_set_header Authorization "Bearer YOUR_QLIK_EMBED_TOKEN"; proxy_set_header Host $host; } } - 重启Nginx服务,将窄播系统中的嵌入URL替换为反向代理地址(如
http://proxy-qlik.local/target-dashboard/)
方案3:使用Qlik嵌入令牌拼接URL
通过Qlik API生成针对指定仪表板的嵌入令牌,直接将令牌作为URL参数传入:
- 调用Qlik的
CreateSession或GenerateEmbedToken接口,生成绑定目标仪表板的专属令牌 - 构造嵌入URL:
http://[Qlik-VM-IP]/target-dashboard?embed_token=GENERATED_TOKEN - 将该URL配置到窄播系统中,Qlik会通过URL参数验证身份,无需跳转登录界面
- 若需长期展示,可设置令牌较长有效期,或编写简单脚本定期更新令牌并同步到窄播方案
方案4:VM层面拦截修改请求(临时场景)
在窄播VM上使用mitmproxy配合iptables,拦截发往Qlik的请求并添加认证头:
- 安装mitmproxy:
apt install mitmproxy(Debian/Ubuntu)或yum install mitmproxy(CentOS) - 编写mitmproxy脚本
add_header.py:from mitmproxy import http def request(flow: http.HTTPFlow) -> None: if flow.request.pretty_host == "[Qlik-VM-IP]": flow.request.headers["Authorization"] = "Bearer YOUR_QLIK_EMBED_TOKEN" - 启动mitmproxy并加载脚本:
mitmproxy -s add_header.py -p 8080 - 配置iptables转发请求:
窄播VM发出的请求会被mitmproxy拦截并添加头后转发给Qlikiptables -t nat -A OUTPUT -d [Qlik-VM-IP] -p tcp --dport 80 -j REDIRECT --to-port 8080
内容的提问来源于stack exchange,提问作者AntonyJ
相关产品推荐
相关产品推荐

