L’implémentation conserve le jeton par e-mail à usage unique existant pour initier le téléchargement, tout en permettant aux sauvegardes locales de créer une autorisation de reprise distincte et bornée, limitée à :
le même administrateur authentifié ;
la même sauvegarde ;
la même valeur de jeton d’origine ; et
une requête ultérieure portant un en-tête Range.
Une seconde requête GET complète ordinaire utilisant le jeton déjà consommé est toujours rejetée, de même qu’une requête Range pour une autre sauvegarde. Les sauvegardes distantes/S3 conservent leur comportement existant.
J’ai fait de la période de reprise une énumération plutôt qu’une durée illimitée :
Disabled (Désactivée)
1 hour (1 heure)
6 hours (recommended) (6 heures (recommandé))
12 hours (12 heures)
Until the original email token expires (Jusqu’à l’expiration du jeton e-mail d’origine)
La période de reprise effective est également limitée à la durée de vie restante du jeton e-mail d’origine lorsque le téléchargement initial commence.
Le comportement actuel de Discourse reste la valeur par défaut (Disabled) pour la rétrocompatibilité, tandis que 6 hours (6 heures) est présenté comme l’option recommandée lorsque les téléchargements reprenables sont activés.
La PR demande si les mainteneurs préféreraient conserver cette valeur par défaut préservant la compatibilité, ou faire de la valeur reprenable recommandée la valeur par défaut dans le cadre de la correction de ce problème.
J’ai également ajouté une couverture de régression pour le chemin de reprise réussi et les principales limites d’autorisation, y compris :
le réutilisation ordinaire du jeton restant rejetée ;
la reprise entre sauvegardes restant rejetée ;
la désactivation du paramètre empêchant immédiatement toute reprise supplémentaire ;
S3 ne recevant pas d’autorisation de reprise locale ; et
le téléchargement initial et sa reprise ne produisant qu’une seule entrée d’audit de téléchargement de sauvegarde.
La suite CI complète est passée et la PR est prête pour examen.
Des retours sur le modèle de sécurité, et en particulier sur la recommandation de 6 heures et le paramètre par défaut, seraient les bienvenus.