Probleme avec SSOwat packaging API perso

Hello !

Comme expliqué dans le titre, j’ai un problème a SSOwat (je pense) dans le cadre du packaging et de l’installation d’une API perso.

En effet j’ai développé une API REST perso en PHP basé sur le framework SLIM que je tente d’installer sur yunohost. J’ai d’abord tenté avec une customweb app mais les problèmes liés à la configuration de nginx m’ont poussé à packager moi même l’API.
Je fais donc ça dans un virtualbox sous Yuno 4.0.8.3 où rien d’autre n’est installé.

Je viens donc de réussir à finir l’installation du package (je suis sur que l’appli ne fonctionne pas parce qu’il manque quelques conf de la BDD nottament). Mais j’ai déjà un premier problème : quand je tente d’accéder à mon API avec Postman on me demande de me connecter. Hors l’application à bien les autorisations visiteurs comme expliqué dans la doc.
Voici ce que me retourne Yuno :

Comment puis-je regler ce problème ?
J’ai trouvé ce post : [SOLVED] Disabling SSowat login for some url / (FR) Désactiver la connexion avec SSowat pour certaines url
Mais il est vieux et la commande proposé est indiqué comme dépreciée.

J’avoue je coince un peu,
Merci d’avance pour votre aide !

C’est précisément pour ce genre de chose qu’on conseille de passer par la custom webapp qui gère aussi la partie config de ssowat pour toi

Ceci dit il est possible de bricoler la conf soi-même, soit en passant par la commande que tu as trouvé, soit en ajoutant à la main des règles dans /etc/ssowat/conf.json.persistent pour dire à ssowat que ton app est publique (genre 'skipped_urls': ['tondomaine.tld/ton_app']) .

Merci pour ton retour Aleks !

Je me doute mais comme j’ai dis je n’ai jamais réussi à la faire fonctionner, même avec l’aide précieuse de tituspijean et bien qu’on y ai passé bcp d’heures…

J’ai tenté toutes les déclinaisons possibles de la commande et ça ne fonctionne pas. Et j’ai aussi ajouter les skipped_urls comme tu m’as proposé mais ça n’y fait rien. J’ai pourtant bien fait un sudo yunohost app ssowatconf pour régénérer SSOwat. J’ai même tenté des unprotected urls mais ça ne fonctionne pas plus…

Dans ce cas tu peux tenter de rajouter "logging": "debug" dans /etc/ssowat/conf.json.persistent, restart nginx et regarder ce que raconte /var/log/nginx/ssowat.log lorsque tu accèdes à ta page

Voilà ce que j’ai :

[DEBUG Sat Dec  5 23:25:19 2020] unprotected_url match current uri : pvapptestpackage.local/pvapptest
[DEBUG Sat Dec  5 23:25:19 2020] unprotected_url match current uri : pvapptestpackage.local/pvapptest
[DEBUG Sat Dec  5 23:25:19 2020] Longest skipped     : 
[DEBUG Sat Dec  5 23:25:19 2020] Longest unprotected : pvapptestpackage.local/pvapptest
[DEBUG Sat Dec  5 23:25:19 2020] Longest protected   : 
[DEBUG Sat Dec  5 23:25:19 2020] /pvapptest/user is in unprotected_urls
[DEBUG Sat Dec  5 23:25:19 2020] Allowing to pass through /pvapptest/user
[DEBUG Sat Dec  5 23:25:19 2020] Longest skipped     : 
[DEBUG Sat Dec  5 23:25:19 2020] Longest unprotected : 
[DEBUG Sat Dec  5 23:25:19 2020] Longest protected   : 
[DEBUG Sat Dec  5 23:25:19 2020] No rule found for /index.php. By default, redirecting to portal
[DEBUG Sat Dec  5 23:25:19 2020] Redirecting to https://pvapptestpackage.local/yunohost/sso/?r=aHR0cHM6Ly9wdmFwcHRlc3RwYWNrYWdlLmxvY2FsL2luZGV4LnBocA==
[DEBUG Sat Dec  5 23:25:19 2020] Serving portal uri /yunohost/sso/ (if the corresponding file exists)

J’ai beau essayer d’autres configs sur les URL rien ne fonctionne, je ne dois pas faire ce qu’il faut…

Ben du coup il laisse bien passer la requête vers pvapptestpackage.local/pvapptest … par contre pas celle vers /index.php …

Je comprend pas trop pourquoi elle passe pas. Et même je comprend pas trop c’est que ce index.php vu que le chemin est étrange. S’agit-il de mon pvapptest/public/index.php ? Ou s’agit-il de pvapptest/index.php ? Parce que lui il n’existe pas, il est bien dans public.

J’ai désactivé SSOwat pour voir ce que ça donne et j’ai un 405. Donc y’a effectivement un problème avec nginx qui ne trouve pas ce index.php dans public. Est ce que le problème de SSO pourrait venir de là ? Parce que sinon je vois pas bien ce qu’il bloque puisque nginx ne trouve pas le index.php. Sinon je comprend pas ou est ce qu’il trouve son index.php qui le dérange.

J’ai essayé d’ajouter urls avec index.php dans le conf.json.persistent mais ça ne change rien. J’ai d’ailleurs fini par tout supprimé et j’ai bizarrement exactement les même résultats.

Peux-tu montrer ton fichier .conf de NGINX ?

voilà :

 rewrite ^/pvapptest$ /pvapptest/ permanent;
#location /pvapptest/public/ {
root /var/www/pvapptest/public/ ;

location /pvapptest/ {
  # Path to source
  #alias /var/www/pvapptest/ ;

  # Force usage of https
  #if ($scheme = http) {
  #  rewrite ^ https://$server_name$request_uri? permanent;
  #}

### Example PHP configuration (remove it if not used)
  index index.php;

  # Common parameter to increase upload size limit in conjunction with dedicated php-fpm file
  #client_max_body_size 50M;

  #try_files $uri $uri/ index.php;
  try_files $uri $uri/ /index.php$is_args$args;
  location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    fastcgi_pass unix:/var/run/php/php7.3-fpm-pvapptest.sock;

    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_param SCRIPT_FILENAME $request_filename;
 
### End of PHP configuration part

  # Include SSOWAT user panel.
  include conf.d/yunohost_panel.conf.inc;
}

Edit : Je suis partis sur la même base que cette appli : https://github.com/YunoHost-Apps/kimai2_ynh/blob/master/conf/nginx.conf qui est basé sur Symfony donc avec une configuration théoriquement semblable.

Pour info le lien du repo de mon packaging : https://github.com/LaBaude32/example_ynh

up :wink: