Passage de scenariserverlite 4.1 à 4.2

Bonjour
J’essaye de passer en 4.2 sur une installation ScenariServerLite
J’ai suivi la documentation SCENARIchain-server
en utilisant les paquets Debian sur un serveur Debian
Sur une machine d’essai : aucun souci, tout fonctionne avec scenariserverlite4.2-tomcat8
Sur mon serveur d’exploitation, j’utilise un proxy apache qui permet de passer en https sur le port 443.
Avec scenariserverlite4.1-tomcat7 ça fonctionnait sans problème.
Avec scenariserverlite4.2-tomcat8, après installation et configuration
dans le navigateur ma commande « https://[xxx.xxx.xxx.xxx]/sc42/web/u/ping » fonctionne bien
Avec le client scenari, après saisie du mot de passe, l’entrepôt distant affiche « Non connecté authentification requise »
Si vous avez une idée…

Vous utilisez bien un cerificat valide ?

Oui (organisme certificateur startSSL)
Il fonctionne sans problème avec les autres services (owncloud par exemple)

Vous utilisez quel url dans SCENARIclient ? Vous utilisez bien un SCENARIclient 4.2 ?

Dans le navigateur je teste https://docs.lachiver.fr/sc42/web/u/ping il me demande de m’authentifier et ça passe
Dans ScenariClient (ou l’entrepôt distant de scenarichain) j’utilise l’URL https://docs.lachiver.fr/sc42/
il me demande de m’authentifier .
Si je mets un mauvais mot de passe, il me signale l’erreur.
Si je mets le bon mot de passe j’obtiens non connecté authentification requise

Merci pour votre aide.
J’ai effectivement vu passer des erreurs 401 dans les logs Apache…
Avec ScenariServerLite 4.1, je n’utilisais pas de connecteur AJP…
En partant de la configuration de base installé par les paquets Debian j’avais juste ajouté
dans la partie <VirtualHost *:443> du fichier de configuration Apache
< IfModule mod_proxy.c>
ProxyPass /sc41 http://localhost:8080/scenariserverlite4.1
ProxyPassReverse /sc41 http://localhost:8080/scenariserverlite4.1
< /IfModule>
et ça fonctionnait bien… :slight_smile:

J’ai donc essayé de refaire la même chose en 4.2 mais après authentification, je ne suis pas connecté… :frowning:
A l’heure actuelle, le client scenari 4.2 se connecte bien en utilisant l’adresse
http://docs.lachiver.fr:8080/scenariserverlite4.2/
pour l’entrepôt distant et ScenrariServer fonctionne bien

Avec vos infos, j’ai essayé le connecteur AJP sans plus de succès…

j’ai chargé le module proxy_ajp en plus

j’ai testé les modifs suivantes

dans le fichier <VirtualHost *:443> du fichier de configuration Apache
< IfModule mod_proxy.c>
ProxyPass « /sc42/ » « ajp://localhost:8009/scenariserverlite4.2/ »
ProxyPassReverse « /sc42/ » « ajp://localhost:8009/scenariserverlite4.2 »
< /IfModule>

Dans le fichier server.xml du serveur tomcat8
j’ai ajouté
< Connector port=« 8009 » protocol=« AJP/1.3 » redirectPort=« 8443 » />

en gardant inchangé
< Connector port=« 8080 » protocol=« HTTP/1.1 »
connectionTimeout=« 20000 »
URIEncoding=« UTF-8 »
redirectPort=« 8443 »
/>

Pas d’erreur dans le log de Scenari
dans access.log d’Apache, a priori une erreur 401
ci-dessous
82.64.4.189 - - [11/Feb/2017:16:29:49 +0100] « POST /sc42//public/u/loginUiMoz HTTP/1.1 » 200 685 « - » « Mozilla/5.0 (X11; Linux x86_64; rv:42.0) Gecko/20100101 cl.4.2/4.2.103 »
82.64.4.189 - - [11/Feb/2017:16:29:49 +0100] « GET /sc42/s/~lachiver/u/adminWsp?cdaction=InfoWspProvider HTTP/1.1 » 401 354 « - » « Mozilla/5.0 (X11; Linux x86_64; rv:42.0) Gecko/20100101 cl.4.2/4.2.103 »

Voila où j’en suis pour le moment

Ca marche Merci beaucoup…

Bonjour,

Je me retrouve exactement dans le même cas : migration d’une 4.1 vers la 4.2 avec une erreur 401 en passant par un frontal apache…
auparavant pas de souci avec notre frontal apache (non ajp) situé sur une autre machine…

Pour déboguer j’ai installé un frontal apache (testé avec ajp et non) directement sur la VM de scenari… sans chiffrement (pour écarter un problème de certificat) idem :

> 127.0.0.1 - - [24/Nov/2017:18:07:15 +0100] "POST /scenariserver4.2/public/u/loginUiMoz HTTP/1.1" 200 19
> 127.0.0.1 - - [24/Nov/2017:18:07:15 +0100] "GET /scenariserver4.2/s/~usertest/u/adminWsp?cdaction=InfoWspProvider HTTP/1.1" 401 -
> 127.0.0.1 - - [24/Nov/2017:18:07:15 +0100] "GET /scenariserver4.2/s/~usertest/u/adminWsp?cdaction=List&withWspProperties=true&fields=basis*srcRoles*srcRi*srcUser HTTP/1.1" 401 -

voici le vhost apache :

<VirtualHost *:80>
ServerName scenari.mondomaine.fr
AssignUserId www-data www-data 
ProxyRequests Off
ProxyPreserveHost On
<location "/" >
Require all granted
ProxyPass http://127.0.0.1:8080/scenariserver4.2/
ProxyPassReverse http:/127.0.0.1:8080/scenariserver4.2/
#ProxyPass ajp://127.0.0.1:8080/scenariserver4.2/
#ProxyPassReverse ajp:/127.0.0.1:8080/scenariserver4.2/
</location>
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options SAMEORIGIN
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
</VirtualHost>

Le fichier /etc/tomcat8/Catalina/localhost/scenariserver4.2.xml :
<Context docBase="/usr/share/scenariserver4.2/webapp" />

Je précise que ça marche très bien sans passer par le frontal (avec le client sur un poste de travail) avec http://scenari.mondomaine.fr:8080/scenariserver4.2

dans server.xml, j’ai :

<Connector port=« 8080 » protocol=« HTTP/1.1 »
connectionTimeout=« 20000 »
URIEncoding=« UTF-8 »
redirectPort=« 8443 »/>
<Connector port=« 8009 » protocol=« AJP/1.3 » redirectPort=« 8443 »/>

=> j’ai essayé de mettre redirectPort=8080… et même un proxyPort=« 80 » mais ça ne change rien…

Vous avez des idées?

merci

Bonjour
Je n’ai pas forcément toutes les compétences pour vous aider.
Pour la config tomcat j’ai les mêmes lignes
Par contre pour le serveur apache, pour le proxy j’ai les lignes suivantes

ProxyPass « /scenariserverlite4.2/ » « ajp://localhost:8009/scenariserverlite4.2/ »
ProxyPassReverse « /scenariserverlite4.2/ » « ajp://localhost:8009/scenariserverlite4.2/ »

Si ça peut vous aider

Bonjour et merci pour votre aide (à tous les 2)

Mais j’ai toujours la même chose (erreur HTTP 401) …

127.0.0.1 - - [27/Nov/2017:14:39:23 +0100] « POST /scenariserver4.2/public/u/loginUiMoz HTTP/1.1 » 200 19
127.0.0.1 - - [27/Nov/2017:14:39:23 +0100] « GET /scenariserver4.2/s/~lenorcy/u/adminWsp?cdaction=InfoWspProvider HTTP/1.1 » 401 -
127.0.0.1 - - [27/Nov/2017:14:39:23 +0100] « GET /scenariserver4.2/s/~lenorcy/u/adminWsp?cdaction=List&withWspProperties=true&fields=basissrcRolessrcRi*srcUser HTTP/1.1 » 401 -

J’ai essayé d’autres directives apache (notamment « proxy-chain-auth ») :

<Proxy *>
Order deny,allow
Allow from all
SetEnv proxy-chain-auth
SetEnv proxy-sendcl

idem…

Que voulez vous dire en soupçonnant une erreur dans votre “context path” ce serait dans tomcat8 ou apache?

Je n’'ai pas précisé mais je suis sous Debian Jessie avec les paquets suivants :

# dpkg -l | egrep "tomcat|apache"
ii  apache2                               2.4.10-10+deb8u11                    amd64        Apache HTTP Server
ii  apache2-bin                           2.4.10-10+deb8u11                    amd64        Apache HTTP Server (modules and other binary files)
ii  apache2-data                          2.4.10-10+deb8u11                    all          Apache HTTP Server (common files)
ii  apache2-utils                         2.4.10-10+deb8u11                    amd64        Apache HTTP Server (utility programs for web servers)
ii  libapache2-mpm-itk                    2.4.7-02-1.1+deb8u1                  amd64        multiuser module for Apache
ii  libtomcat8-java                       8.0.14-1+deb8u11                     all          Apache Tomcat 8 - Servlet and JSP engine -- core libraries
rc  scenariserver4.1-tomcat6              4.1.011-s1                           all          SCENARIserver 4.1 - Tomcat6 integration.
ii  scenariserver4.2-tomcat8              4.2.104-s1                           all          SCENARIserver 4.2 - Tomcat integration.
rc  tomcat6                               6.0.45+dfsg-1~deb7u2                 all          Servlet and JSP engine
ii  tomcat8                               8.0.14-1+deb8u11                     all          Apache Tomcat 8 - Servlet and JSP engine
ii  tomcat8-common                        8.0.14-1+deb8u11                     all          Apache Tomcat 8 - Servlet and JSP engine -- common files

peut-il y avoir un conflit de quelque chose avec scenariserver4.1-tomcat6 encore présent?

merci

Bonjour,

Essayez de supprimer vos Headers imposés (en particulier le Set-Cookie qui me semble une erreur) :

Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options SAMEORIGIN
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure

Bonjour,

oui j’avais également essayé de mettre le « context path » entre les balises host dans server.xml (sans « lite »)… mais c’est encore pire… l’accès directe ne marche plus (le client m’indique « système d’authentification indisponible »)… et encore moins via apache…

J’ai aussi essayé d’enlever les headers…

Je suppose évidemment que le user « usertest » existe bien, que le processus d’authentification (saisie du mot de passe) semble se passer correctement, mais les requêtes suivantes échouent (401). C’est probablement dû à l’absence des cookies d’authentification sur les requêtes suivantes. Si ces requêtes sont bien exemptes de cookies, il faut comprendre pourquoi le cookie a été rejeté, probablement dans la chaine de vos proxys.

Bonjour et merci pour votre aide

  • tomcat8 écoute bien sur le port 8080
  • scenariserver4.2 (et non scenariserverlite4.2) est installé à partir du dépôt
  • serveur atteignable et répondant correctemenet à partir de http://scenari.mondomaine.fr:8080/scenariserver4.2 (on peut travailler à partir du client via cette URL)

dans le fichier “/etc/tomcat8/Catalina/localhost/scenariserver4.2.xml” j’avais initialement :

<Context docBase="/usr/share/scenariserver4.2/webapp" />

maintenant j’ai :

<Context path="/" docBase="/usr/share/scenariserver4.2/webapp/" />

=> j’ai toujours la même chose : ça marche toujours bien en direct (port 8080) mais erreur 401 en passant par le frontal apache (port 80)

Je viens de reprendre le vhost minimaliste que tu proposes :

<VirtualHost *:80>
  ServerName scenari.mondomaine.fr
  AssignUserId www-data www-data

   ProxyRequests Off
   ProxyPreserveHost On
   <location "/" >
    Require all granted
     ## AJP
     #ProxyPass                "ajp://127.0.0.1:8009/"
     #ProxyPassReverse    "ajp://127.0.0.1:8009/"
     
     ## HTTP
     ProxyPass 			"http://127.0.0.1:8080/"
     ProxyPassReverse  		"http://127.0.0.1:8080/"
   </location>
 </VirtualHost>

mais ça ne marche pas si je ne rajoute pas « /scenariserver4.2 » dans les directives ProxPass comme ceci :

<VirtualHost *:80>
  ServerName scenari.mondomaine.fr
  AssignUserId www-data www-data

   ProxyRequests Off
   ProxyPreserveHost On
   <location "/" >
    Require all granted
     ## AJP
     #ProxyPass                "ajp://127.0.0.1:8009/"
     #ProxyPassReverse    "ajp://127.0.0.1:8009/"
     
     ## HTTP
     ProxyPass 			"http://127.0.0.1:8080/scenariserver4.2/"
     ProxyPassReverse  		"http://127.0.0.1:8080/scenariserver4.2/"
   </location>
 </VirtualHost>

… mais là j’ai à nouveau mes erreurs 401

127.0.0.1 - - [29/Nov/2017:09:25:14 +0100] "POST /scenariserver4.2/public/u/loginUiMoz HTTP/1.1" 200 19
127.0.0.1 - - [29/Nov/2017:09:25:14 +0100] "GET /scenariserver4.2/s/~lenorcy/u/adminWsp?cdaction=InfoWspProvider HTTP/1.1" 401 -
127.0.0.1 - - [29/Nov/2017:09:25:14 +0100] "GET /scenariserver4.2/s/~lenorcy/u/adminWsp?cdaction=List&withWspProperties=true&fields=basis*srcRoles*srcRi*srcUser HTTP/1.1" 401 -

a+

Bonjour,

C’est y est !!! ça marche!!!

avec ce vhost :

<VirtualHost *:80>
  ServerName scenari.mondomaine.fr
   ProxyRequests Off
   <location "/scenariserver4.2/" >
    Require all granted
    ProxyPass 			"http://127.0.0.1:8080/scenariserver4.2/"
    ProxyPassReverse  		"http://127.0.0.1:8080/scenariserver4.2/"
   </location>
 </VirtualHost>

et surtout avec l’URL « scenari.mondomaine.fr/scenariserver4.2/ »

et maintenant ça marche avec notre reverse https (qui n’est pas sur la même VM que scenari) : https://tice.mondomaine.fr/scenariserver4.2/ et qui mutualise d’autres ressources web…

en remplacement finalement seulement :

ProxyPass /scenari/ http://scenari.mondomaine.fr:8080/scenariserver4.2/
ProxyPassReverse /scenari/ http://scenari.mondomaine.fr:8080/scenariserver4.2/

par

ProxyPass /scenariserver4.2/ http://scenari.mondomaine.fr:8080/scenariserver4.2/
ProxyPassReverse /scenariserver4.2/ http://scenari.mondomaine.fr:8080/scenariserver4.2/

=> il faut, dans mon cas, que le chemin proxifié soit identique au chemin de l’application!!! C’est en tous les cas vrai selon mon installation de scenari… et certainement la configuration de scenari.

En tous les cas, pour les problèmes similaires… inutile de trop se soucier des directives apache…ProxyPreserveHost, les Header, la transmission des cookies, l’authentification… une config minimaliste du reverse (et surtout habituelle) fonctionne :slight_smile:

merci encore pour votre aide

évidemment qu’il faut sécuriser le reverse proxy! On aura bien compris que je mentionnais ces éléments pour un fonctionnement avec une configuration minimale…