Repository navigation
Google OAuth PKCE et accès public sans progression personnelle - #34
Merged
Merged
Conversation
Preserve V3, encrypted outbox, AES-GCM envelopes and conditional writes. Add isolated Auth/browser tests and a public-only course distribution.
Exercise every public lesson and reject implicit/unsolicited Auth returns.
iPoower
changed the base branch from
security/fail-closed-sql-envelope-20261024
to
main
October 25, 2026 06:44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Google OAuth réutilise le transport Supabase avec PKCE S256, callback exact, vérification Auth /user et refus d’un propriétaire inattendu. Le compte confirmé et la phrase indépendante sont requis avant tout accès à la progression. Les cours publics restent accessibles sans compte, avant chargement du stockage personnel.
AES-256-GCM/PBKDF2 V1, restauration atomique V3, outbox chiffrée, révisions conditionnelles, RLS et historique de 20 versions sont conservés. Aucun app.js, SQL, dépendance ou workflow de déploiement remplacé. La lecture publique sous la même origine n’est pas une isolation entre applications ; un PC administré ne doit pas recevoir de session ou de phrase personnelle.
Validation : CI de la branche remise à jour 40170238102, SHA 9d8129a, puis CI du main fusionné 40170536664, SHA 0edcf3f : provenance, Chromium et WebKit réussis. Toutes les suites antérieures sont conservées, avec les nouveaux parcours OAuth/multi-clients, réouverture, hors ligne, réponse perdue et identité inattendue. HTTP Auth/REST de ces tests navigateur est simulé ; WebKit ne remplace pas un iPhone physique.
Intégration du 25 octobre sous GO global conditionnel : #33 fusionnée en premier (6612e01), puis cette PR après remise à jour et CI. Arbres de code identiques aux candidats validés ; branches historiques conservées. Main est désormais protégée : PR, trois contrôles GitHub Actions, base à jour, discussions résolues, aucun bypass administrateur, force-push ou suppression. Pas d’approbation indépendante obligatoire faute de second reviewer ; l’auteur ne peut pas s’auto-approuver.
Sur jsxbpxlipjmkszfektis : Google activé, nonce/email conservés, inscriptions publiques et anonymes fermées, URL de retour exacte. Catalogue de 31 lignes relu identique, RLS/grants minimaux inchangés, zéro utilisateur et zéro sauvegarde. Aucun SQL réinstallé. Security Advisor : 0 erreur/0 avertissement/0 suggestion. Les accès REST réels sans clé, anonymes et avec Bearer invalide sont refusés sur les deux tables. Le véritable endpoint authorize redirige vers Google avec seulement openid/email/profile et le callback Supabase attendu ; la page de connexion Google est atteinte sans erreur client affichée, sans connexion ni choix de compte.
Pages 40170790435 est maintenant réussi après approbation humaine iPoower. SHA effectivement publié : 0edcf3f, manifeste rattaché à la CI 40170536664. Les 24 fichiers publics, manifeste inclus, ont été comparés octet par octet au build du commit : tous conformes. Le lecteur public affiche les 42 cours, et le bouton Google du code publié mène réellement à accounts.google.com / Connexion sans erreur client affichée. Aucun compte sélectionné, phrase saisie ou snapshot envoyé ; la page Users confirme toujours zéro utilisateur. Le déploiement intermédiaire #33 reste annulé et les protections de publication sont conservées. Les notices Node 20/Node 24 et ubuntu-latest sont documentées comme maintenance, sans échec du déploiement.
Limites avant activation personnelle : échange OAuth complet, sessions Auth et REST propriétaire/interutilisateurs avec identités légitimes de recette, puis PC ↔ iPhone physique. Aucune identité Google de test disponible n’a été connectée. Aucun utilisateur personnel, secret de chiffrement, progression réelle, SMTP, dépense ou ancien projet modifié. Les premières connexion et sauvegarde personnelles restent sous le contrôle de l’utilisateur.