Ajax 跨域单点登录

  • 文档创建者:jiangsr
  • 编辑次数:12次
  • 最近更新:Wendy123456 于 2020-05-21
  • 1. 概述

    1.1 版本

    报表服务器版本
    10.0

    1.2 功能简介

    Ajax 登录方式天然支持跨域,故在 OA 系统的登录界面中直接通过 Ajax 将用户名密码发送到报表服务器进行后台验证,则可解决跨域单点登录问题。

    注:FineReport10.0 兼容 FineReport9.0 的单点登录接口,可用老单点登录方式;但 FineReport10.0 集群环境不兼容 FineReport9.0 单点登录方式。

    2. 示例

    2.1 新建 HTML 文件

    1)新建 HTML 文件,代码如下所示:

    注1:根据实际情况修改代码中的「访问 URL」、「用户名」、「密码」。

    注2:参考 决策平台在线接口文档 ,实现更多功能。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
       <meta charset="utf-8">
       <title>10.0单点登录示例</title>
    </head>
    <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>
    <script type="text/javascript">
       $(document).ready(function () {
           $('#login').click(function () {
               $.ajax({
                   url: 'http://localhost:8075/webroot/decision/login/cross/domain',
                   data: {'fine_username': 'admin', 'fine_password': '123456', 'validity': -1},
                   dataType: 'jsonp',
                   callback: 'callback',
                   success: function (data) {
                       
        if(!data.errorCode) {
         alert("登录成功");
        } else{
         alert("登录失败")
        }
                   },
                   error: function () {
                       alert('登录失败');
                   }
               });
           });
           $('#wb1').click(function () {
               window.open('http://localhost:8075/webroot/decision/view/report?viewlet=demo/analytics/图表联动.cpt')
           });
       });

       function setCookie(name, value) {
           document.cookie = name + "=" + escape(value);
       }

       function getCookie(name) {
           var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
           if (arr = document.cookie.match(reg)) {
               return unescape(arr[2]);
           } else {
               return null;
           }
       }
    </script>
    <body>
    <button id="login">点击我登录</button>
    <a id="wb1">点我访问GettingStarted.cpt</a>

    </body>
    </html>

    2)将 HTML 文件命名为为sso.html,放到%FR_HOME%/webapps/webroot文件夹下,如下图所示:

    1589979845209577.png

    2.2 关闭内容嗅探攻击防护按钮

    以管理员身份进入数据决策系统,点击管理系统>安全管理,关闭内容嗅探攻击防护按钮,如下图所示:

    17.png

    2.3 效果查看

    效果如下图所示:

    222

    3. 注意事项

    问题描述:

    Ajax 跨域单点登录平台时,谷歌浏览器不生效,跳转到登录页。

    原因分析:

    谷歌浏览器最新版本(80.0)及以上修改了安全策略,因此单点登录会失败。

    解决方案:

    在谷歌浏览器地址栏中输入:chrome://flags/,然后在搜索框输入「SameSite」搜索并找到

    SameSite by default cookies选项,右侧按钮选择Disabled重启谷歌浏览器即可。如下图所示:

    21.png



    附件列表


    主题: 数据决策系统
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!