Baïkal : connexion au serveur impossible !

Bonjour,

J’ai installé Baïkal sur mon serveur, configuré un utilisateur et un calendrier. Jusque là, tout va à merveille !

Par contre, quand j’essaie de configurer un client, quel qu’il soit (évolution, Thunderbird + ligthning…) je ne parviens pas à me connecter au serveur. Nginx met ça dans les logs :
2019/10/26 23:03:40 [error] 30190#30190: *82 FastCGI sent in stderr: "PHP message: user not authorized: Baikal DAV: Username or password was incorrect. Login was needed for privilege: {DAV:}read on" while reading response header from upstream, client: 192.168.1.12, server: baikal.mondomaine.tld, request: "PROPFIND /card.php HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "baikal.mondomaine.tld"
Or, je suis sûr de mettre le bon utilisateur et le bon mot de passe !

J’ai mis comme URL de l’agenda celle qui est préconisée dans tous les tutos que j’ai lus :
https://baikal.mondomaine.tld/cal.php/calendars/monUID/

À tout hasard, voici ce que renvoie nginx -V :

nginx version: nginx/1.14.2
built with OpenSSL 1.1.1c  28 May 2019 (running with OpenSSL 1.1.1d  10 Sep 2019)
TLS SNI support enabled
configure arguments:
  --with-cc-opt='-g -O2
  -fdebug-prefix-map=/build/nginx-tBUzFN/nginx-1.14.2=.
  -fstack-protector-strong
  -Wformat
  -Werror=format-security
  -fPIC
  -Wdate-time -D_FORTIFY_SOURCE=2'
  --with-ld-opt='-Wl,-z,relro -Wl,-z,now -fPIC'
  --prefix=/usr/share/nginx
  --conf-path=/etc/nginx/nginx.conf
  --http-log-path=/var/log/nginx/access.log
  --error-log-path=/var/log/nginx/error.log
  --lock-path=/var/lock/nginx.lock
  --pid-path=/run/nginx.pid
  --modules-path=/usr/lib/nginx/modules
  --http-client-body-temp-path=/var/lib/nginx/body
  --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
  --http-proxy-temp-path=/var/lib/nginx/proxy
  --http-scgi-temp-path=/var/lib/nginx/scgi
  --http-uwsgi-temp-path=/var/lib/nginx/uwsgi
  --with-debug
  --with-pcre-jit
  --with-http_ssl_module
  --with-http_stub_status_module
  --with-http_realip_module
  --with-http_auth_request_module
  --with-http_v2_module
  --with-http_dav_module
  --with-http_slice_module
  --with-threads
  --with-http_addition_module
  --with-http_geoip_module=dynamic
  --with-http_gunzip_module
  --with-http_gzip_static_module
  --with-http_image_filter_module=dynamic
  --with-http_sub_module
  --with-http_xslt_module=dynamic
  --with-stream=dynamic
  --with-stream_ssl_module
  --with-stream_ssl_preread_module
  --with-mail=dynamic
  --with-mail_ssl_module
  --add-dynamic-module=/build/nginx-tBUzFN/nginx-1.14.2/debian/modules/http-auth-pam
  --add-dynamic-module=/build/nginx-tBUzFN/nginx-1.14.2/debian/modules/http-dav-ext
  --add-dynamic-module=/build/nginx-tBUzFN/nginx-1.14.2/debian/modules/http-echo
  --add-dynamic-module=/build/nginx-tBUzFN/nginx-1.14.2/debian/modules/http-upstream-fair
  --add-dynamic-module=/build/nginx-tBUzFN/nginx-1.14.2/debian/modules/http-subs-filter

Qu’ai-je fait de travers ou oublié ?

Bonjour,

Quelle version de Baïkal ? Il faut une version 0.6 pour la compatibilité avec PHP 7.3

Merci de ta réponse :slight_smile:

Oui, j’ai bien pris la version 0.6.0, apparemment la dernière disponible sur Github. Désolé, j’aurais dû le préciser !

Vérifie bien ta procédure d’installation : http://sabre.io/baikal/install/
Et-ce que c’est accessible via l’interface web avec cet utilisateur ?

J’avais effectivement quelques petites différences dans la config de Nginx que j’ai rectifiées.

Par contre, effectivement, tout va bien si je m’authentifie comme admin, mais si j’essaie comme utilisateur j’ai toujours

Authentication error
The login/password you provided is invalid. Please retry.

Par acquis de conscience, j’ai pourtant copié-collé le mot de passe depuis un éditeur et l’ai changé pour l’utilisateur.

Message d’erreur de nginx :
2019/10/27 14:52:57 [error] 1659#1659: *27 FastCGI sent in stderr: "PHP message: user not authorized: Baikal GUI" while reading response header from upstream, client: 192.168.1.12, server: baikal.mondomaine.tld, request: "POST /admin/ HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.3-fpm.sock:", host: "baikal.mondomaine.tld", referrer: "https://baikal.mondomaine.tld/admin/"

Donc c’est bien un problème de nom d’utilisateur ou mot de passe.
Pour tester tu peux créer un utilisateur avec un nom ne comportant que des lettres ex : toto et un mot de passe simple avec que des lettres ex : rdgbnoipeshukd
Si cela ne fonctionne toujours pas, il va falloir regarder du côté de la base de données.

J’ai rajouté à mon post précédent l’erreur générée par nginx.

C’est pareil avec toto, mot de passe toto :frowning:

Je vais vérifier, mais j’avais créé pour mariadb un utilisateur baikal avec tous les privilèges…

Vérifié : voilà comment j’avais créé l’utilisateur :
GRANT ALL PRIVILEGES ON baikal.* TO 'baikal'@'localhost' IDENTIFIED BY 'mot-de-passe';

Et la base de données baikal tu l’as créé comment ?

J’ai juste fait un
CREATE DATABASE baikal;

baikal semble s’en être débrouillé :

MariaDB [baikal]> show tables;
+-----------------------+
| Tables_in_baikal      |
+-----------------------+
| addressbookchanges    |
| addressbooks          |
| calendarchanges       |
| calendarinstances     |
| calendarobjects       |
| calendars             |
| calendarsubscriptions |
| cards                 |
| groupmembers          |
| locks                 |
| principals            |
| propertystorage       |
| schedulingobjects     |
| users                 |
+-----------------------+
14 rows in set (0.001 sec)

Ok, je voulais juste être sûr que ta base données était bien créée avec toutes ses tables. Du coup je ne vois pas trop pourquoi ton utilisateur est systématiquement refusé. Tu peux quand même vérifier si les utilisateurs créés sont bien dans la table users de baikal

C’est bien le cas :

MariaDB [baikal]> select * from users;
+----+----------+----------------------------------+
| id | username | digesta1                         |
+----+----------+----------------------------------+
|  1 | joseph   | 0a1660841173517639087cb69e211ae5 |
|  2 | toto     | c95f265c077622f4886d3a9120a3b182 |
+----+----------+----------------------------------+
2 rows in set (0.001 sec)

Par contre, dans les settings, pour l’authentification, il faut mettre Basic ou Digest ? Je n’ai pas su trouver d’explications claires sur ce point…

Oui c’est donc bien un problème d’authentification et la doc de baikal renvoie ici :
http://sabre.io/dav/authentication/
Je dirais qu’il faut utiliser Basic :

Problems with safe mode

If ‘safe mode’ is enabled, PHP will automatically append a process ID to authentication realms. This is problematic for Digest authentication, as it used the realm to determine the hash.

The solution to this is to either turn off Safe Mode, or using Basic authentication instead of Digest.

J’ai supprimé mon utilisateur toto, passé en authentification “Basic”, puis recréé toto. Même problème :frowning:

Bon, ça vaut le coup que je reprenne l’intallation/configuration depuis le départ, ou je risque encore de retrouver le problème qui viendrait d’ailleurs ?

Autre question probablement idiote, mais le “Web Admin” me gêne un peu : c’est bien dans la page principale (index.php sans aucun paramètre) qui affiche “Please authenticate to access Baïkal Web Admin.” qu’il faut que j’essaie de m’authentifier toto ? Comme ça ne fonctionnait pas, j’ai bêtement pensé que seul l’admin pouvait intervenir sur le serveur Baïkal, et qu’ensuite les utilisateurs ne pouvaient créer leur agenda que par un client CalDav…

Je pense que tu as raison pour les utilisateurs. Ils n’ont pas accès à l’interface web.
Donc ton problème est peut-être simplement un problème d’URI d’accès au calendriers.

D’après la doc (qui n’est pas très claire sur le sujet http://sabre.io/baikal/troubleshooting/) , ce devrait être accessible via :
https://baikal.mondomaine.tld/.well-known/caldav

Je me rappelle avoir un peu ramé il y a quelques années quand j’avais essayé Baïkal et comme j’avais aussi besoin de la synchro de fichiers, je suis passé à Nextcloud.
De mémoire l’administration se faisait avec une URI du type : example.com/admin et les utilisateurs ne pouvaient pas gérer leurs contacts depuis l’interface web (uniquement depuis un client type Thunderbird). Je pensais que cela avait largement évolué depuis, mais il semble que non :wink:

Ça marche !

Merci de ton aide précieuse ! :slight_smile:

Finalement, il y avait peut-être deux choses :

  • Une ou deux bricoles dans la config de nginx
  • L’authentification en Digest, qu’il vaut mieux mettre en Basic

mais surtout l’URL à mettre dans le client, qui n’est pas du tout celle que j’avais lue dans plusieurs tutos :rage: Celle que tu m’as indiquée fonctionne parfaitement.

Bonjour,
6 mois plus tard en plein confinement…
Et quelle est la bonne URL de connexion ?
Merci :wink:
JB