[Résolu] Protéger accès répertoire web .htaccess pour my_webapp sous nginx

Bonsoir,
Je me permets de rebondir sur cette dicussion, car la question m’intéresse.

Je cherche également à protéger l’accès à une custome_webapp par un mot de passe mais sans passer par le SSO car je ne peux pas créer des comptes pour chaque utilisateur (c’est pour un enseignement avec une vingtaine d’étudiants). L’idéal serait vraiment de pouvoir définir un couple identifiant/mot de passe pour une identification HTTP comme on le ferait avec un htaccess sur Apache.

Il me semble avec Nginx qu’on peut modifier le fichier de conf du site en ajoutant une directive auth_basic, mais je ne voudrais pas casser les fichiers générés par yunohost en les modifiant manuellement. Je préfère donc d’abord vous demander s’il y a une contre-indication à procéder comme ceci.

Merci d’avance pour vos réponses

2 Likes

Non tu peux probablement faire ça, sache juste que Yunohost peut potentiellement écraser le fichier de conf nginx de l’app lorsque tu met l’app à jour (mais normalement te mettre le diff dans le log et faire une sauvegarde du fichier initial quelque part …)

Merci ! Je viens de le faire en suivant les instructions de la doc nginx, ça fonctionne très bien.
Je ferai attention lors des prochaines mises à jour.

1 Like

Bonjour,
Désolé de relancer ce message mais je tourne en rond. J’ai créé cet utilisateur sous yunohost:


J’ai modifié mon fichier
/etc/ssowat/conf.json.persistent
Comme suit:
> {“redirected_urls”: {“domaine.xyz/”: “domaine.xyz/site3”, “domaine2.com/”: “domaine2.com/wordpress”}}

      "permissions": {
        "_ecam": {
          "label": "grassecergy",
          "public": false,
          "users": ['grassecergy'],
          "auth_header": true,
          "show_tile": true,
          "uris": [
            "domaine.xyz/site3/_ecam"
          ]
        }
      }

En mettant dans la barre d’adresse
https://domaine.xyz/site3/_ecam/
J’arrive sur une erreur 403
image
L’idée est d’autoriser seulement l’utilisateur grassecergy à accéder à
https://domaine.xyz/site3/_ecam/
Pourriez-vous m’aider?
En vous remerciant.

Et tu es bien loggué sur le SSO en tant que grassecergy lorsque tu fais ça …? Quid de si tu changes temporairement “public” : false en “public”: true ?

Bonsoir,
Le problème c’est qu’en essayant de me connecter au sso par
https://domaine.xyz/yunohost/sso/
Je tombe sur une erreur:
500 Internal Server Error
en mettant “public”: true

Hmbon ben ça ressemble à un soucis de syntaxe JSON …

@tetro @Aleks
Bonjour,
Je tourne en rond avec le fichier .json je vais donc plutôt me tourner la solution liée à nginx. proposée par @tetro . J’ai néanmoins un petit souci. J’ai bien compris la mise en œuvre pour lé génération du mot de passe dans le dossier à protéger à priori ( Creating a Password File), mais vous faites référence à un fichier .conf spécifique à votre

my_webapp

à modifier

Pour ma part je ne sais pas où il se trouve. Pourriez-vous m’en donner le nom et le chemin? Et éventuellement joindre une copie de ce dernier si cela est possible? En vous remerciant.

Le fichier de conf est dans le répertoire /etc/nginx/conf.d/nom-de-domaine.d/webpapp_*.conf

À priori tu as dû recevoir le chemin précis dans le courriel récapitulatif après l’installation de la webapp.

Pour les instructions à ajouter dans le fichier :

location /api {
    auth_basic           "Titre de ton choix";
    auth_basic_user_file /etc/apache2/.htpasswd; 
}

auth_basic_user_file est à changer par le chemin vers le fichier contenant les identifiants que tu as créés.

Bonsoir,
Suite à ma demande sur github pour l’application my_webapp et à la réponse @Aleks je dépose mes fichiers sur:
https://paste.yunohost.org
Donc voici mon fichier webpapp__3.confqui pose problème à la ligne 46:
https://paste.yunohost.org/pogezatofi.nginx
Et mon fichier d’erreur après la relance de nginx:
https://paste.yunohost.org/zuzafixuce.rb
J’ajoute que j’ai essayé notamment à la ligne 46:

location /var/www/my_webapp__3/www/_ecam {

Je vous remercie pour votre aide.

Du coup ton soucis c’est que la location que tu rajoutes (location / dans ton paste, mais plus tôt tu parlais de location /api) n’est pas un sous-chemin de location /site3/

Si ce que tu veux protéger c’est l’URL tondomaine.tld/site3/api, alors ta location doit être location /site3/api

Par contre si ce que tu veux protéger c’est tondomaine.tld/api, alors il faut mettre ton bloc location complètement en dehors du bloc location /site3 (voir même dans un autre fichier)

Bonsoir,
La partie du site que je veux protéger sous les sous dossiers de:
https://wendling.xyz/site3/_ecam/
A savoir:
https://wendling.xyz/site3/_ecam/_thermodynamique
https://wendling.xyz/site3/_ecam/_rdm
https://wendling.xyz/site3/_ecam/_hydraulique
Donc j’imagine que ma ligne 46 doit s’écrire:

    location /site3/api {

Est-ce bien cela?
Mais ma question depuis le début est de comprendre ce que représente ce /api c’est un dossier? Un appel à une variable?
Si au passage vous pouviez un peu éclairé ma lanterne par un lien adapté?
En tout cas merci pour votre patience et je vais essayer immédiatement la modification du fichier webpapp__3.conf.

Béheu le /site3/api ça représente la route (ou url si tu préfères) que tu veux protéger … donc si on prends les url que tu as donnés plus haut, dans ton cas c’est pas /site3/api mais /site3/_ecam/_thermodynamique (et pareil pour les deux autres, donc il te faut plusieurs blocs location - à moins que tu veuilles protéger tout /site3/_ecam en entier)

1 Like

Nouvel essai et toujours un problème sur la ligne 46:
webpapp__3.conf
https://paste.yunohost.org/xasekasoge.nginx
et le fichier d’erreur:
https://paste.yunohost.org/abohiqedom.vbs
Une idée?

Tu as mis des quotes bizarres (“ et ” au lieu de ") …

Oui vous aviez parfaitement raison des fois on se sent très vieux! Merci!

Bonsoir,
Il me reste un dernier problème. Lorsque je vais sur la page:
https://wendling.xyz/site3/_ecam/
La boîte de dialogue n’affiche pas son nom qui devrait être : “Identification”
Alors que le fichier my_web__app3.conf
https://paste.yunohost.org/padorogilo.nginx
contient bien la directive
auth_basic "Identification";
Avez-vous une idée d’où peut venir ce problème, En vous remerciant.

En fait l’affichage de la directive identification est liée au navigateur utilisé.

Bonsoir a tous,

J’essaie aussi de mettre un mot de passe sur l’entierete de ma custom webapp.
J’utilise la version officielle de my_webapp avec une debian et yunohost a jour.

Dans la section principale de la conf nginx de la webapp, j’ai ajouté :


    auth_basic           “Administrator’s Area”;
    auth_basic_user_file /etc/nginx/conf.d/htpasswd; 

Lorsque je me connecte au site j’ai bien une demande de login/mot de passe, mais ca bloque comme si le mot de passe etait faux.
Pour generer le mot de passe j’ai utilisé htpasswd en suivant ce guide officiel nginx :

2 questions svp :

  • quels chmod et chown dois-je faire sur le fichier pour etre sur qu’il puisse etre lu par nginx ?
  • Est-ce que je dois mettre les deux lignes auth_basic dans une section { } dediee du genre :
location ~ {
auth_basic ...
}

@Aleks Peut etre que ca serait cool d’avoir cette fonction de login/password integree directement dans la conf nginx de l’application avec un .htpasswd dans le dossier www activee lors de l’installation ? Comme ca on aurait les mise a jour de l’app sans soucis :slight_smile:

Bonjour,
Je ne sais pas si cela peut aider à l’époque j’avais rédigé ce tutoriel.protegerLectureRepertoireWebapps.pdf (242,3 Ko)