DOM Document : load XML() empty string
-
Bonjour,
J’ai installé la dernière version de votre plugin. Mon serveur CAS tourne en local, sur un serveur Tomcat 8 et en HTTPS.
Lorsque que je me connecte à mon site (avec le plugin activé), j’arrive à me connecter à mon serveur CAS mais ensuite, je tombe sur beaucoup d’erreurs.
La première : DOMDocument::loadXML(): Empty string supplied as input in C:/…./plugins/wp-cassify/classes/wp_cassify_plugin.php on line 571.
la ligne en question :
“$cas_user_datas_xml->loadXML( $cas_server_xml_response );”La deuxième erreur : DOMXPath::query(): Undefined namespace prefix in C:\…\plugins\wp-cassify\classes\wp_cassify_plugin.php on line 577
la ligne : $cas_user_entries = $xpath->query( $query_cas_user );La troisième erreur : DOMXPath::query(): Invalid expression in C:\…\plugins\wp-cassify\classes\wp_cassify_plugin.php on line 577
Et il y en a d’autres qui suivent… A quoi est-ce lié ? Je ne comprends pas ce que ces lignes ont de bloquants ?
Merci pour votre aide,
Romane
-
Ah, et à la fin de la page, j’ai une erreur :
“User account does not exists in WordPress database !”Pourtant j’ai coché la case “Create users if not exist”…
Bonjour,
Je pense que vous avez mal configuré le plugin et/ou le serveur CAS.
Je ne peux pas vous aider si vous ne me donnez pas plus d’informations sur les paramètres que vous avez saisis sur la page de configuration du plugin. (Il me faut toutes les valeurs).
D’autre part, il semble que votre serveur CAS ne revoit pas de réponse.
Configurez le debug sur votre serveur. Dans le fichier wp-config.ini :
@ini_set(‘display_errors’,’Off’);
@ini_set(‘log_errors’,’On’);
@ini_set(‘error_log’,’/var/www/your-website/phperrors.log’); (Adaptez le chemin pour Windows)Dans le fichier classes/wp_cassify_plugin.php, à la ligne 237, écrivez le code de debug suivant :
error_log( print_r( $cas_server_xml_response, TRUE ) );Re-authentifiez-vous. Puis renvoyez moi le contenu du fichier phperrors.log.
Cordialement.
Bonjour,
Je ne trouve pas de fichier wp-config.ini : à quoi correspond il ? A mon serveur CAS ?
Mon serveur CAS est déployé sur un serveur Tomcat 8 en local.
Les paramètres du plugin sont les paramètres de bases :
– adresse du serveur CAS
– CAS version protocol: 3
– Create user if not exist
– CURL_SSLVERSION_DEFAULT
–> j’ai un warning qui s’affiche sur la page du plugin, au dessus du texte :
” Warning: mcrypt_encrypt(): Key of size 10 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported in C:\wamp64\www\comm\wp-content\plugins\wp-cassify\classes\wp_cassify_utils.php on line 390″Dans le fichier wp_cassify_plugin.php, la ligne 237 est vide et se trouve au milieu de la fonction wp_cassify_grab_service_ticket(), dans le if(! empty( $service_ticket ) ) : est-ce bien ?a ?
Merci,
Cordialement,Bonjour,
C’est difficile de solutionner votre problème sachant que vous avez beaucoup de lacunes.
J’ai fait une erreur de frappe, je voulais parler du wp-config.php (et non ini). C’est le fichier de configuration principal de WordPress.La fonction error_log est la fonction de traces utilisée fréquemment en PHP
pour debugger. Elle n’est pas spécifique à WordPress.$cas_server_xml_response = WP_Cassify_Utils::wp_cassify_do_ssl_web_request( $service_validate_url, $wp_cassify_ssl_cipher_selected, $wp_cassify_ssl_check_certificate ); error_log( print_r( $cas_server_xml_response, TRUE ) ); // Parse CAS Server response and store into associative array. $cas_user_datas = $this->wp_cassify_parse_xml_response( $cas_server_xml_response );
Que donne le contenu du fichier de log précédemment positionné ?
Lorsque vous essayez d’accéder à une page authentifiée de votre site WordPress, avez-vous au moins la redirection vers le formulaire de votre serveur CAS ?
Quelle est la version de votre serveur CAS ?
Le problème du Warning a déjà été solutionné dans le ticket suivant, donc merci de ne pas spammer le forum de support avec les mêmes questions posées plusieurs fois :
https://www.ads-software.com/support/topic/smpt-password-does-not-match?replies=9Cordialement.
Bonjour,
Quand j’essaie de me connecter, je suis bien authentifiée sur le formulaire du serveur CAS, c’est après, lors de la redirection vers mon site que se produit l’erreur (“User account does not exists in WordPress database !” et les autres tableaux décrits précédemment)
J’utilise un serveur CAS 3.5.2.1
J’ai essayé de générer le fichier phperrors.log mais il n’a pas été créé en me reauthentifiant…
Le lien sur lequel j’arrive après mon authentification CAS est :
https://_mon_site_/?ticket=ST-5-x24liCkFxGnt1Fw5XJUT-cas01.example.orgJe suis désolée pour mon manque de connaissance, je suis stagiaire dans une entreprise qui me demande de réaliser un site communautaire avec une authentification unique via serveur CAS. Je suis donc encore en apprentissage et c’est la première fois que j’utilise WordPress.
Merci pour votre patience et votre aide.
Ok,
Je vais tenter de vous aider mais je ne vous promet rien compte tenu du faible niveau d’information.
Avez-vous correctement configuré votre fichier de configuration wp-config.php pour le debug en adaptantle chemin vers le fichier de log en fonction de votre architecture ?
Configurez votre fichier wp-config.php comme suit :
@ini_set('display_errors','Off'); @ini_set('log_errors','On'); @ini_set('error_log','/var/www/your-website/phperrors.log'); (Adaptez le chemin pour Windows)
Ensuite, dans le fichier wp_cassify_plugin.php, comme suit :
$cas_server_xml_response = WP_Cassify_Utils::wp_cassify_do_ssl_web_request( $service_validate_url, $wp_cassify_ssl_cipher_selected, $wp_cassify_ssl_check_certificate ); error_log( print_r( $cas_server_xml_response , TRUE ) ); // Parse CAS Server response and store into associative array. $cas_user_datas = $this->wp_cassify_parse_xml_response( $cas_server_xml_response );
ou sinon si votre fichier de log n’est toujours pas créé, vous pouvez essayer comme ceci :
$cas_server_xml_response = WP_Cassify_Utils::wp_cassify_do_ssl_web_request( $service_validate_url, $wp_cassify_ssl_cipher_selected, $wp_cassify_ssl_check_certificate ); die( print_r( $cas_server_xml_response ) ); // Parse CAS Server response and store into associative array. $cas_user_datas = $this->wp_cassify_parse_xml_response( $cas_server_xml_response );
Ensuite communiquez-moi soit le contenu de votre fichier de log. Soit dans le second cas, si vous n’arrivez à configurer votre fichier de log, utilisez la commande die pour afficher à l’écran le retour du serveur CAS.
Je suis vraiment désolé aussi mais sans informations précises issues du fichier de log, je ne peux pas vous répondre.
Bonjour,
J’ai bien paramétré le fichier wp-config.php
Dans le fichier wp_cassify_plugin, j’ai utilisé la deuxième option
le fichier phperrors.log ne s’écrit toujours pas et je ne comprends pas pourquoi.En revanche, sur la log de mon CAS j’ai obtenu :
2016-04-19 11:30:29,131 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] - org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler successfully authenticated [username: Romane] 2016-04-19 11:30:29,132 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] - Resolved principal Romane 2016-04-19 11:30:29,132 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] - org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler@3500d60 authenticated Romane with credential [username: Romane]. 2016-04-19 11:30:29,132 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - Audit trail record BEGIN ============================================================= WHO: [username: Romane] WHAT: supplied credentials: [username: Romane] ACTION: AUTHENTICATION_SUCCESS APPLICATION: CAS WHEN: Tue Apr 19 11:30:29 CEST 2016 CLIENT IP ADDRESS: 0:0:0:0:0:0:0:1 SERVER IP ADDRESS: 0:0:0:0:0:0:0:1 ============================================================= 2016-04-19 11:30:29,132 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - Audit trail record BEGIN ============================================================= WHO: [username: Romane] WHAT: TGT-2-3lvv9YndSbFkBaOMVv2s3qLAvXGGrYOi4MReaB9LoybEENukdn-cas01.example.org ACTION: TICKET_GRANTING_TICKET_CREATED APPLICATION: CAS WHEN: Tue Apr 19 11:30:29 CEST 2016 CLIENT IP ADDRESS: 0:0:0:0:0:0:0:1 SERVER IP ADDRESS: 0:0:0:0:0:0:0:1 ============================================================= 2016-04-19 11:30:29,133 INFO [org.jasig.cas.CentralAuthenticationServiceImpl] - Granted service ticket [ST-2-HyeqIWOcSqldiJEDake4-cas01.example.org] for service [https://localhost/comm/] for user [Romane] 2016-04-19 11:30:29,134 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - Audit trail record BEGIN ============================================================= WHO: Romane WHAT: ST-2-HyeqIWOcSqldiJEDake4-cas01.example.org for https://localhost/comm/ ACTION: SERVICE_TICKET_CREATED APPLICATION: CAS WHEN: Tue Apr 19 11:30:29 CEST 2016 CLIENT IP ADDRESS: 0:0:0:0:0:0:0:1 SERVER IP ADDRESS: 0:0:0:0:0:0:0:1 ============================================================= 2016-04-19 11:30:37,425 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Reloading registered services. 2016-04-19 11:30:37,426 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - Loaded 4 services.
Et sur ma page web j’ai “1” qui s’affiche.
J’essaie à nouveau de générer ce fichier phperrors.log et je reviens vers vous. A priori, le serveur CAS ne re?oit pas de réponses, comme vous disiez dans votre première réponse.Je comprends que ce soit difficile sans plus d’informations, mais comme je vous disais je ne comprends pas pourquoi malgré votre code, le fichier log ne s’écrit pas…
Sur les paramètres du plugin, dans la section “Urls Settings”, le champs “Name of service validate servlet” est : “p3/serviceValidateU”
Ce champs s’est rempli automatiquement, je n’y ai pas touché.Veuillez m’excuser pour ce manque d’informations encore une fois, je réessaie de générer ce fichier…
Merci pour votre aide.Ca y est !
Voici le contenu du fichier phperrors.log :
[19-Apr-2016 10:02:46 UTC] PHP Warning: mcrypt_encrypt(): Key of size 10 not supported by this algorithm. Only keys of sizes 16, 24 or 32 supported in C:\wamp64\www\comm\wp-content\plugins\wp-cassify\classes\wp_cassify_utils.php on line 390 [19-Apr-2016 10:02:46 UTC] PHP Stack trace: [19-Apr-2016 10:02:46 UTC] PHP 1. {main}() C:\wamp64\www\comm\wp-admin\options-general.php:0 [19-Apr-2016 10:02:46 UTC] PHP 2. require_once() C:\wamp64\www\comm\wp-admin\options-general.php:10 [19-Apr-2016 10:02:46 UTC] PHP 3. do_action() C:\wamp64\www\comm\wp-admin\admin.php:236 [19-Apr-2016 10:02:46 UTC] PHP 4. call_user_func_array:{C:\wamp64\www\comm\wp-includes\plugin.php:525}() C:\wamp64\www\comm\wp-includes\plugin.php:525 [19-Apr-2016 10:02:46 UTC] PHP 5. wp_cassify\WP_Cassify_Admin_Page->wp_cassify_options() C:\wamp64\www\comm\wp-includes\plugin.php:525 [19-Apr-2016 10:02:46 UTC] PHP 6. wp_cassify\WP_Cassify_Utils::wp_cassify_simple_encrypt() C:\wamp64\www\comm\wp-content\plugins\wp-cassify\admin\admin-menu.php:1040 [19-Apr-2016 10:02:46 UTC] PHP 7. mcrypt_encrypt() C:\wamp64\www\comm\wp-content\plugins\wp-cassify\classes\wp_cassify_utils.php:390
Pouvez-vous positionnez dans le fichier wp_cassify_plugin.php, comme suit :
$cas_server_xml_response = WP_Cassify_Utils::wp_cassify_do_ssl_web_request( $service_validate_url, $wp_cassify_ssl_cipher_selected, $wp_cassify_ssl_check_certificate ); error_log( '#########################' ); error_log( 'REPONSE DU SERVEUR CAS : ' ); error_log( print_r( $cas_server_xml_response , TRUE ) ); error_log( '#########################' ); // Parse CAS Server response and store into associative array. $cas_user_datas = $this->wp_cassify_parse_xml_response( $cas_server_xml_response );
Effacez le contenu du fichier de log puis refermez-le. Retentez de vous authentifier et redonner moi le contenu du fichier de log.
Sur les paramètres du plugin, dans la section “Urls Settings”, le champs “Name of service validate servlet” est : “p3/serviceValidateU”
Ce champs s’est rempli automatiquement, je n’y ai pas touché.C’est normal, c’est rempli automatiquement lorsqu’on sélectionne CAS Protocol Version à 3.
La valeur p3/serviceValidateU est incorrecte, il devrait normalement y avoir p3/serviceValidate à la place. Vous avez du faire un copier-coller malencontreux.
Repositionnez la valeur p3/serviceValidate dans le champ et sauvegarder.
Si cela ne fonctionne pas, positionnez la valeur 2 dans CAS Protocol Version, validez et retentez.(Votre serveur CAS n’est peut-être pas compatible avec la version 3 du protocol).
Cordialement
J’ai placé le code et voilà le résultat :
[19-Apr-2016 12:09:57 UTC] ######################### [19-Apr-2016 12:09:57 UTC] REPONSE DU SERVEUR CAS : [19-Apr-2016 12:09:57 UTC] [19-Apr-2016 12:09:57 UTC] #########################
En étudiant le code, je pense que la variable $cas_server_xml_response est vide et c’est ce qui génère l’erreur.
Si je comprend bien, j’ai donc une erreur du c?té de mon serveur CAS ?Repositionnez la valeur p3/serviceValidate dans le champ et sauvegarder.
C’est corrigé et oui c’était une erreur de copier-coller.
Rebonjour,
En repositionnant la valeur p3/serviceValidate et CAS Protocol version à 3, parvenez-vous à vous connecter ?
Idem en testant avec CAS Protocol version à 2 ?Sinon, c’est que vous avez un problème de communication (routage ou résolution DNS) entre votre serveur WordPress et votre serveur CAS. Mais dans ce cas, c’est de votre ressort.
J’ai essayé d’aller plus loin.
j’ai fait afficher les composants de la variable $cas_server_xml_response :error_log( '#########################' ); error_log( 'REPONSE DU SERVEUR CAS : ' ); error_log( print_r( $cas_server_xml_response , TRUE ) ); error_log( print_r( $service_validate_url , TRUE ) ); error_log( print_r( $wp_cassify_ssl_cipher_selected , TRUE ) ); error_log( print_r( $wp_cassify_ssl_check_certificate , TRUE ) ); error_log( '#########################' );
Le résultat obtenu :
[19-Apr-2016 14:14:12 UTC] ######################### [19-Apr-2016 14:14:12 UTC] REPONSE DU SERVEUR CAS : [19-Apr-2016 14:14:12 UTC] [19-Apr-2016 14:14:12 UTC] https://localhost:8443/cas/login/p3/serviceValidate?ticket=ST-2-ttkvP4Cxvi3vw4GjQ1N9-cas01.example.org&service=https://localhost/comm/ [19-Apr-2016 14:14:12 UTC] 0 [19-Apr-2016 14:14:12 UTC] disabled [19-Apr-2016 14:14:12 UTC] #########################
En étudiant encore, je pense qu’il y a un problème au moment du serviceValidate ou de la communication entre le CAS et le site web.
C’est comme si le CAS ne fournissait pas le fichier xml contenant l’id et les attributs de la personne authentifiée dont a besoin le plugin.Dans l’étude de votre plugin, dans les informations envoyées par $cas_server_xml_response, il y a l’url pour le serviceValidate avec un id de ticket issu du CAS.
Dans mon cas, c’est ce lien qui semble ne pas bien fonctionner. Dans la log du serveur CAS, on aper?oit un mouvement http suspect :
HTTP/1.1 302 Déplacé Temporairement
et en effet, en regardant mieux ce qui se passe après une authentification sur la page du CAS, on a un id de ticket A, et quand on arrive ensuite sur la page suivante notre ticket a un id B… Le mouvement a eu lieu entre ces deux échanges. Je continue à étudier tout ?a demain.Je ne sais pas si je suis claire, ou même cohérente. J’ai encore du mal avec toutes ces notions et je vous remercie pour toute l’aide que vous m’apportez.
Merci
Cordialement.Sinon, c’est que vous avez un problème de communication (routage ou résolution DNS) entre votre serveur WordPress et votre serveur CAS. Mais dans ce cas, c’est de votre ressort.
J’ai très probablement ce problème de communication.
Merci pour votre aide.Bonjour,
Effectivement, l’erreur venait de ma part et non de votre plugin.
Erreur 1 : un serveur CAS de version 3.X.X.X utilise le protocole 2 et non le protocole 3 comme je le pensais.
Erreur 2 : mon serveur CAS est déployé en local pour des tests avant lancement en production sur un serveur distant. Il y a des modifications à apporter au pare-feu Windows pour autoriser le CAS à communiquer vers l’extérieur et à recevoir des réponses…
Voilà, mes erreurs sont maintenant résolues. Et votre plugin fonctionne parfaitement sur mon site WordPress.
Merci pour votre aide et votre patience.
- The topic ‘DOM Document : load XML() empty string’ is closed to new replies.