使用Laravel Homestead的CAS代理:回调网址未经过身份验证

时间:2015-05-18 12:58:19

标签: php laravel cas

我需要设置一个Laravel应用程序,它可以使用CAS 2.0协议将身份验证代理到第三方服务(我也可以控制)。

为此,我有:

  • 在本地Docker容器上运行的CAS服务器,配置为允许通过HTTP和HTTPS中的所有服务
  • 在本地家园vm上运行的laravel应用程序(我将127.0.0.1映射到homestead.app)
  • 第三方应用程序(基于Django的python应用程序)也通过runserver在本地运行,我需要对其进行身份验证请求(因此我需要将laravel应用程序作为代理,然后向这个应用程序发出请求。)。

laravel应用程序使用jasig / phpCAS和xavrsl / cas(没有足够的声誉发布超过2个链接,但github repos通过Google轻松发布)与CAS服务器进行交互。它是一个非常简单的应用程序,只需在用户通过CAS成功登录时显示消息。简单之处在于我只需将其设置为测试目的以进行进一步的开发。

到目前为止,我已设法使非代理身份验证工作,因此我的设置的所有部分都正在进行交互和正确通信。

然而,当我想启用代理身份验证时,这一切都会变得很糟糕。我无法生成Laravel App用于代表用户进行身份验证请求的PGT票证。显然,CAS服务器拒绝识别pgtURL回调的有效性(默认情况下需要为https,但自签名证书似乎不够)。由于所有这些仅用于测试目的,我已根据this post从CAS服务器禁用了SSL验证,并尝试使用http回调网址。

当我尝试连接到我的服务器时,这里是日志:

YUI().use('aui-datatable', 'aui-pagination', 'datatable-sort', function(Y) {
  var dataPages = [{
    Tel: '345678901',
    Register: '\x65\x66\x67\x68\x69\x70\x71\x72'
  }, {
    Tel: '456789012',
    Register: '\x66\x67\x68\x69\x70\x71\x72\x73'
  }, {
    Tel: '567890123',
    Register: '\x67\x68\x69\x70\x71\x72\x73\x74'
  }, {
    Tel: '678901234',
    Register: '\x68\x69\x70\x71\x72\x73\x74\x75'
  }, {
    Tel: '789012345',
    Register: '\x69\x70\x71\x72\x73\x74\x75\x76'
  }, {
    Tel: '890123456',
    Register: '\x70\x71\x72\x73\x74\x75\x76\x77'
  }, {
    Tel: '901234567',
    Register: '\x71\x72\x73\x74\x75\x76\x77\x78'
  }, {
    Tel: '012345678',
    Register: '\x72\x73\x74\x75\x76\x77\x78\x79'
  }, {
    Tel: '123456789',
    Register: '\x73\x74\x75\x76\x77\x78\x79\x80'
  }, {
    Tel: '234567890',
    Register: '\x74\x75\x76\x77\x78\x79\x80\x81'
  }, {
    Tel: '345678901',
    Register: '\x75\x76\x77\x78\x79\x80\x81\x82'
  }, {
    Tel: '456789012',
    Register: '\x76\x77\x78\x79\x80\x81\x82\x83'
  }, {
    Tel: '567890123',
    Register: '\x77\x78\x79\x80\x81\x82\x83\x84'
  }, {
    Tel: '321014567',
    Register: 'asdfasdf'
  }, {
    Tel: '786234567',
    Register: 'zxcvsdfg'
  }, {
    Tel: '451234567',
    Register: 'rtyucvbn'
  }, {
    Tel: '678901234',
    Register: '\x78\x79\x80\x81\x82\x83\x84\x85'
  }, {
    Tel: '789012345',
    Register: '\x79\x80\x81\x82\x83\x84\x85\x86'
  }, {
    Tel: '890123456',
    Register: '\x80\x81\x82\x83\x84\x85\x86\x87'
  }, {
    Tel: '901234567',
    Register: '\x81\x82\x83\x84\x85\x86\x87\x88'
  }];

  var columns = [{
    key: 'Tel',
    label: 'Tel',
    sortable: true
  }, {
    key: 'Register',
    label: 'Register',
    sortable: true
  }];

  var hiddenDataTable = new Y.DataTable({
    columns: columns,
    data: dataPages
  });

  var dataTable = new Y.DataTable({
    columns: columns
  }).render('#DataTableConsult');

  var pagination = new Y.Pagination({
    contentBox: '#pagination .aui-pagination-content',
    page: 1,
    on: {
      pageChange: function(event) {
        var hiddentData = hiddenDataTable.get('data')._items;
        var dataPageOne = hiddentData.slice(0, 6);
        var dataPageTwo = hiddentData.slice(6, 12);
        var dataPageThree = hiddentData.slice(12, 18);

        if (event.newVal === 1) {
          dataTable.set('data', dataPageOne);
        } else if (event.newVal === 2) {
          dataTable.set('data', dataPageTwo);
        } else if (event.newVal === 3) {
          dataTable.set('data', dataPageThree);
        }
      }
    }
  }).render();

  dataTable.on('sort', function(event) {
    hiddenDataTable.sort(event.sortBy);
    pagination.set('page', 1);
  });
});

我有与https回调网址相同的消息,我知道它正在工作(使用自签名证书),因为我可以使用https访问我的laravel应用程序。我没有在CAS文档中找到有关如何配置CAS的任何内容,因此回调并不需要https网址,而且我确实在整个主题上找不到任何帮助(根据此{{3我在步骤2(b)中失败了,因为获取PGT是我的应用程序首先要做的事情,因为回调未经过身份验证,所以不能这样做。

作为CAS(和Laravel / PHP)的新手,我不知道如何从那里继续前进,并希望得到一些帮助。

1 个答案:

答案 0 :(得分:1)

好的,我通过将我的宅基自签名证书添加到docker容器信任库中解决了这个问题。由于Cas服务器在tomcat服务器上运行,我不得不在hometead local ip中使用别名来设置/ etc / hosts,这也导致了它的问题,但它们并不是很难修复。如果需要,我可以对此进行扩展,但我认为我的问题过于具体,无法与许多人相关。