0

我有一个基本的 CAS 6.4.2 服务器在https://mycas. 我还有一个基本的 php 客户端,我正在尝试使用 CAS 3 连接到它。这个 php 应用程序使用 phpCAS 官方客户端 ( https://github.com/apereo/phpCAS ),版本 1.4.0。

我可以使用这个 Apereo CAS 实例来保护与其他 NodeJS 应用程序的连接,但是当我尝试连接到 php 应用程序时,它在尝试验证服务票证时失败。

错误信息是:

PHP Warning:  DOMDocument::loadXML(): Extra content at the end of the document in Entity, line: 1 in /usr/local/src/php-cas-client-example/composer-example/vendor/jasig/phpcas/source/CAS/Client.php on line 3426

Ticket not validated
Reason: bad response from the CAS server
CAS response: 
<head/><cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationSuccess>
        <cas:user>XXX</cas:user>
        <cas:attributes>
            <cas:clientIpAddress>XXX</cas:clientIpAddress>
            <cas:isFromNewLogin>false</cas:isFromNewLogin>
            <cas:authenticationDate>2021-11-29T13:53:40.699600Z</cas:authenticationDate>
            <cas:successfulAuthenticationHandlers>RestAuthenticationHandler</cas:successfulAuthenticationHandlers>
            <cas:userAgent>XXX</cas:userAgent>
            <cas:credentialType>UsernamePasswordCredential</cas:cre 
in /usr/local/src/php-cas-client-example/composer-example/vendor/jasig/phpcas/source/CAS/Client.php on line 3428

从那个错误和之前的警告中,我了解到问题出在</head>标签上,它将 xml 变成了不正确的响应。对我来说奇怪的是,当我访问由同一个 Apereo CAS 实例(也使用 CAS 协议的第 3 版)验证的 NodeJS 应用程序时,似乎没有出现这个结束标记。

我试过的

  • 将 CAS 协议版本从 3 更改为 2
  • 使用旧版本的 phpClient(特别是 1.3.5 和 1.3.8)
  • 修改 Apereo CAS 应该发送到 php 应用程序的属性(通过服务注册表中使用的 JSON)
  • 使用旧版本的 Apereo CAS (5.2.x)。-> 这个实际上似乎有效,但我找不到原因。并且使用旧版本的 Apereo CAS 不是一种选择

那我问什么

如何解决我的 phpCAS 客户端收到该</head>标签的问题?是关于我如何配置 Apereo CAS 服务器或 phpCAS 客户端的问题吗?或者是其他东西?

任何帮助,将不胜感激,

4

0 回答 0