feat: migrate OAuth tokens from plaintext JSON to OS keychain #66
Labels
No labels
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#66
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
Actuellement, les tokens OAuth (access + refresh) sont stockés en clair dans
auth/tokens.jsonavec des permissions 0600 (Unix). Acceptable en pré-release mais à migrer vers le keychain OS.Tâche
Migrer vers le keychain natif (Linux: libsecret, Windows: Credential Manager) via le crate
keyringoutauri-plugin-store.Acceptance criteria
Ref: CWE-312 (Cleartext Storage of Sensitive Information)
Related: #51
Revue multi-expert de la spec (#66)
Spec complète annotée dans
spec-issue-66-oauth-keychain.md. Verdict : 🔴 CRITIQUES A CORRIGER avant implémentation.6 critiques à corriger
com.lacompagniemaximus.simpl-resultatmaistauri.conf.jsondéclarecom.simpl.resultat. Aligner sur l'identifiant réel.fs::remove_filene zéroïfie pas les blocs. Overwrite + fsync avant delete.bundle.targetsinclut appimage, qui n'hérite pas des deps apt. Bundler via linuxdeploy, retirer, ou documenter.libsecret-1-devdans release.yml aussi.rust/frontend), seulrusta besoin de libsecret. Append à l'étape Install system dependencies existante.7 améliorations
src-tauri/src/commands/token_store.rs(pas de nouveau top-levelauth/)store_modepersistant pour détecter les downgrades hostilesTOKENS_FILE.exists()partoken_store::load()?.is_some()à auth_commands.rs:320keyring = "3.x"+cargo auditen CIsubscription_statusdoit être re-validé/signé (tampering bypasse le gating licence)0006-oauth-tokens-keychain.md(pasadr-006-), changelog sousChangedpasSecurityEstimation revue
Spec : 2h30-3h → réel : 4-5h (CI debug cycles, linking libsecret, validation libs manquantes).
Prochain pas : mettre à jour la spec pour intégrer ces 13 points, puis créer la branche d'implémentation.