Contexte: Je crée un serveur de fichiers. J'utilise Tomcat derrière le proxy inverse Nginx. J'ai un serveur principal qui héberge l'interface utilisateur et beaucoup de serveurs périphériques où j'espère stocker les fichiers téléchargés par l'utilisateur et les servir. C'est un stockage de fichiers privé, donc seul le téléchargeur de fichiers devrait pouvoir télécharger les fichiers téléchargés. Problème: J'authentifie les utilisateurs sur le serveur principal lorsqu'ils se connectent à leur compte en créant une session et en la conservant pour valider d'autres requêtes de la part des utilisateurs (tâches régulières). Cette information n'est pas propagée aux serveurs de périphérie, les serveurs de périphérie servent des fichiers à n'importe quelle demande. Ce n'est pas ce que je veux. Je veux autoriser les téléchargements uniquement pour le propriétaire du fichier.Valider les demandes d'un utilisateur entre les serveurs
Maintenant, ici j'essaie d'éviter le clustering Tomcat où les bords et les serveurs principaux configurent comme un cluster qui a des sessions distribuées. Le site est pris en charge par SSL. Existe-t-il un moyen de valider l'état de connexion d'un utilisateur lorsqu'une demande de téléchargement de fichier atteint un serveur Edge d'un utilisateur déjà connecté (créé une session) sur le serveur principal?
Où se situe votre limite de confiance? Est-ce que votre requête de main à edge contient simplement l'ID utilisateur et que edge peut le vérifier avant de servir le fichier ou de renvoyer le fichier 401 Non autorisé lorsque l'utilisateur donné n'est pas autorisé? Ou devez-vous rendre les fichiers utilisateur aussi sûrs que possible, même contre les personnes ayant accès aux serveurs (administrateurs, opérateurs, employés, etc.)? – diginoise
Quelque chose entre les deux. userId est trop faible comme on peut le deviner. Interdire l'accès admin au fichier nécessiterait de crypter le fichier entier en utilisant une clé connue uniquement du propriétaire du fichier et de le décrypter sur le navigateur des clients.Ce que je veux empêcher quelqu'un (autre que le propriétaire) de le télécharger sur Internet en utilisant un direct comme le fichier. – printfmyname
Vous devez faire en sorte que les transactions de sécurité des serveurs de périphérie soient en quelque sorte prises en compte ... Un cookie dont l'heure d'expiration est chiffrée avec la clé privée du serveur principal; Les serveurs Edge déchiffreraient alors le cookie à l'aide de la clé publique de Main. – diginoise