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

Bonjour,
Je souhaiterai protéger un répertoire web par un mot de passe et éventuellement un login. J’ai trouvé ce tutoriel sur openclassromms qui me convient bien avec l’aide d’un fichier .htaccess: Protégez un dossier avec un .htaccess - Concevez votre site web avec PHP et MySQL - OpenClassrooms. Mais d’après ce que j’ai compris cele ne fonctionne qu’avec apache et yuno fonctionne avec nginx.
Avez-vous donc des pistes pistes et des conseils à ce propos pour une utilisation avec nginx?
En vous remerciant.

Pourquoi ne pas installer l’application my webapp / custom webapp et restreindre les permissions aux utilisateurs (du coup la restruction par login/mot de passe se fera implicitement par le SSO) ?

Bonjour,
Effectivement je n’avais pas envisagé ce biais. Mais cela veut dire que je renonce à la possibilité que mon site soit public et je souhaite seulement restreindre l’accès à un dossier du site. A moins qu’il ne soit possible avec le SSO de contrôler l’accès à un seul répertoire du site? Merci pour votre réponse.

Huuu oui avec le nouveau système de permission de la 4.1 tu peux théoriquement rajouter des permissions pour une sous-url de ta webapp … Par contre j’avais pas réalisé que c’était pour un site avec également une partie publique, du coup ça complexifie un peu les choses même si ça reste faisable…

Il te faut éditer le fichier /etc/ssowat/conf.json.persistent et rajouter une règle custom dans la clé “permission” (attention c’est du json, il faut faire attention à la syntaxe et ça dépends un peu de ce qu’il y a déjà dans ton fichier …)

Tu peux/dois remplacer :

  • my_custom_webapp_secret_folder par le nom que tu veux (mais idéalement seulement des caractères alphanumériques + underscore _ …
  • pareil pour le label “My secret folder” mais là y’a un peu + de liberté. Le label est le nom affiché dans le portail utilisateur
  • le nom d’utilisateur autorisé à accéder à l’app (your_username)
  • "tondomaine.tld/ta_webapp/mon_dossier_secret" … c’est l’url où se situe ton dossier à protéger
  "permissions": {
    "my_custom_webapp_secret_folder": {
      "label": "My secret folder",
      "public": false,
      "users": ['your_username'],
      "auth_header": true,
      "show_tile": true,
      "uris": [
        "tondomaine.tld/ta_webapp/mon_dossier_secret"
      ]
    }
  }
1 Like

Oui merci beaucoup. Je vais faire cela!

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 ") …