简单总结一下 qlikview 权限管理和SSO集成的过程, 在集成qlikview报表过程中碰到了很多坑, 甚至官方文档也不准确.  如果你也有类似的需求, 可以参考一下本文.  需要说明的是, 本文档方案仅仅是一个次优方案, 最优方案暂不发表.

本人承接qlikview 权限管理和sso集成服务,  有需求者可以联系我, liuzhongwu2008@163.com. 一般经优化后, License节省率在80%以上,每个Document许可目录价900美元(每个Named user许可更达1300美元), 节省率80%, 就能省下一大笔许可费,  经济新常态, 企业都不容易啊, 省了就是挣了.

本方案实施起来十分简单, qlikview server 端仅需做一些简单的配置即可, 最重要的是能大大节省 Qlikview的 license 费用.

总结该方案的特性有:
1. 节省License, 一般能节省80%, 而且用户数数量越多, 节省率越高.
2. 采用SSO账号作为用户ID, 而不必一定是NT域账号, 这样才符合绝大多数企业的管理模式.(企业系统权限管控一般是SSO账号, 而不按照机器登录账号)
3. 完善的报表访问管控机制, 可以按照SSO账号/部门开放报表的访问权.
4. 巧妙的报表数据行级管控机制. 据我所知很多公司就是因为需要做行级数据权限管控, 而不得不采用NT域账号进行Licnese管控, 最终购买非常多的许可证, 花费巨大. 网上也有一些许可证优化手段, 但如果你要做行级权限管控, 这些方法都不行, 本方案能完美解决这个问题.
5. 提供一个内置的报表Portal, 可以直接将这个系统开放给最终用户.
6. 提供系统集成的API, 方便其他系统集成, 本系统帮你搞定和QV交互的一切问题.

 
关于如何节省 license fee, 奥妙在于我有办法更智能更高效地使用每个许可, 很少量的许可数即可以支持很多用户用户使用.  同时document 许可比Named user 许可便宜不少, 所以我建议最好是使用document 许可.

本文给出一些相关的知识点, 包括下面几个方面, 如需要详细解决方案, 可以联系我, liuzhongwu2008@163.com.

一, DB server
 新建qv用户权限表, 存储qv报表和最终用户的权限关系


二, qv server端:
1. 参考参考文献一, 选用适应性较好的webticket方案, 开启一个IP whitelist(白名单机制是最简单, 同时也最安全).
2. 在QMC上,  在qv document的authorization上, 设置一个access规则, access 值取 always, user type 取 all users.

三, client端:
1. #获取web ticket的代码(python)
    import requests
    from requests.auth import HTTPBasicAuth
    req = requests.get('http://your_qv_server/QvAJAXZfc/GetWebTicket.aspx?cmd=<Global method="GetWebTicket"><UserId></UserId><GroupListIsNames>true</GroupListIsNames></Global>')
    req.content  #得到ticket
2. 访问指定的qv报告
下面访问方式, IE和其他浏览器都可以用:
​​​http://your_qv_server/QvAJAXZfc/Authenticate.aspx?type=html&webticket=jfiVHRbfg22nBSdnFgoJ42IgXLdX1enfZ3JmHAMa&try=/QvAJAXZfc/opendoc.htm?document=your_Report.qvw​​​

IE 浏览器, 也可以使用:
​​​http://your_qv_server/QvAJAXZfc/Authenticate.aspx?type=html&webticket=jfiVHRbfg22nBSdnFgoJ42IgXLdX1enfZ3JmHAMa&try=/QvPlugin/opendoc.htm?document=your_Report.qvw​​​

参考文献:
1. qlik webticket document( server 端设置)
    https://community.qlik.com/docs/DOC-3614?
2. qlik webticket and doc access url ( client 端)
    https://community.qlikview.com/thread/136599
3. server端和client端的示例与文档
    https://github.com/braathen/qv-webticket
4. qlik AJAX and URL parameters
    https://community.qlik.com/blogs/qlikviewdesignblog/2014/07/11/ajax-and-url-parameters
    https://community.qlikview.com/thread/31497
5. QlikView Mashup
    http://tools.qlikblog.at/QlikView-Mashups/QlikView_Mashups_1.html
    https://help.qlik.com/en-US/qlikview-developer/12.1/Subsystems/Mashups/Content/mashups-document-integration.htm
    http://www.qlikblog.at/2343/qliktip-48-qlikview-mashup-examples-documentation/
6. SSO in Qlikview, 有sso的pdf文档和示例代码
    https://community.qlik.com/thread/77105
7. tool which test QlikView Webtickets, 一个 GUI 工具, 附源码
    https://community.qlik.com/docs/DOC-7008
8. QlikView系统集成及SSO相关技术
    http://www.51yc.cn/?p=22
9. QV行级权限管控  http://help.qlik.com/zh-CN/qlikview/12.0/Subsystems/Client/Content/Security.htm