で基本的な CAS 6.4.2 サーバーを実行していhttps://mycas
ます。また、CAS 3 を使用して接続しようとしている基本的な php クライアントもあります。この 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を使用することはオプションではありません
そのとき私が尋ねること
</head>
そのタグを受け取る phpCAS クライアントの問題を解決するにはどうすればよいですか? Apereo CAS サーバーまたは phpCAS クライアントの構成方法に関するものですか? または、他の何か?
どんな助けでも大歓迎です、