feat(ra-console): registre des opérateurs dans le navigateur (étape 6e) - #73
Open
PhilippeVienne wants to merge 3 commits into
Open
PhilippeVienne wants to merge 3 commits into
PhilippeVienne wants to merge 3 commits into
Conversation
docs/WEBUI.md §5, §10 : ra-console relaie, sur le schéma des étapes 3 et
4 (challenge puis exécution, cible contrôlée par ca-server), les actions
de registre qu'oe_actions exécute déjà : invite_operator, confirm_key,
revoke_key, set_role.
- Routes (module registry_routes) : POST /api/v1/operators,
POST /api/v1/credentials/{credential_id}/confirm et /revoke,
POST /api/v1/operators/{name}/role. Le jeton d'invitation n'existe que
dans result.invite_token de la réponse, jamais journalisé.
- oe_actions::Expect gagne credential_id et operator ; le contrôle de
cible devient générique (une cible d'un autre type est refusée), avant
toute consommation de la cérémonie. Une invitation n'a pas de cible.
- Élever au rôle admin ou changer celui d'un administrateur : deux
administrateurs, co-signature par /api/v1/quorum/{id}/sign (la route
de signature joint désormais la cible des actions de registre).
- Tests de bout en bout : invitation puis enregistrement puis
confirmation, jeton absent du journal de la console ; révocation de
clé et changement de rôle où seule la cible distingue ; élévation admin
à deux. Cinq mutations tuées.
Co-authored-by: Claude <noreply@anthropic.com>
…' into feat/ra-console-frontend-operators # Conflicts: # bin/ra-console/tests/action_challenge.rs # docs/RA-CONSOLE.md
docs/WEBUI.md §10, §15 étape 6 : un administrateur gère le registre depuis la console, chaque écriture étant une action signée que ca-server juge (routes de #69, fusionnées dans cette branche). - `GET /api/v1/operators` : opérateurs, clés, clés en attente, en lecture seule ; l'empreinte d'une clé en attente est recalculée avec oe_actions::key_fingerprint, la fonction même de ca-server (test Rust : identique à celle remise à l'invitée). - Écran des opérateurs : invitation (jeton affiché une seule fois), confirmation d'une clé en attente après déclaration de comparaison de l'empreinte hors bande, révocation de clé (motif obligatoire), changement de rôle (admin : second administrateur en salle de quorum). Boutons désactivés pour les non-administrateurs (affichage seulement). - Harnais e2e : un administrateur et un opérateur de test. Parcours : invitation, changement de rôle, révocation de clé ; consultation seule pour un non-administrateur (mutation tuée). Co-authored-by: Claude <noreply@anthropic.com>
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.
Objet
docs/WEBUI.md§10 et §15 étape 6, tranche 6e : un administrateur gère le registre des opérateurs depuis la console. Base : #72 (feat/ra-console-frontend-revoke). Cette branche contient aussi la fusion de #69 (routes de registre, écrites en parallèle sur #67) : merger #69 avant cette PR ; au rebase surdev, le commit de fusion disparaît. Deux conflits résolus à la fusion (ajouts en fin deaction_challenge.rset dedocs/RA-CONSOLE.md, les deux côtés conservés).GET /api/v1/operators— opérateurs, clés, clés en attente, en lecture seule sur les tables deca-server. L'empreinte d'une clé en attente est recalculée avecoe_actions::key_fingerprint, la fonction même deca-server: l'administrateur la compare hors bande avec celle que l'invité a reçue (§10) ; une console qui afficherait une autre empreinte ferait échouer la confirmation, pas passer une autre clé.adminexige un second administrateur :AWAITING_QUORUM, co-signature en salle de quorum de feat(ra-console): révocation et salle de quorum dans le navigateur (étape 6c) #72).ca-serverjuge.Limites
Vérifications
an_admin_invites_and_confirms_an_operator_through_the_consoleétendu (lecture du registre, empreinte identique,401sans session) ; les 14 tests deaction_challenge.rspassent après la fusion.frankapparaît), changement de rôle dedave(vérifié côté serveur), révocation de sa clé ; consultation seule pour un non-administrateur. Mutation : forcer l'affichage « administrateur » fait échouer ce dernier parcours.cargo fmt --check,cargo clippy --workspace --all-targets -- -D warnings(1.97 et 1.98.1),cargo test --workspaceavec PostgreSQL,cargo audit --ignore RUSTSEC-2023-0071,npm run typecheck: verts.Revue humaine obligatoire
Voir PROVENANCE.md. Chaque case est cochée par le
contributeur humain qui valide la PR, après l'avoir fait lui-même.
make licenses)Assistance par IA
Co-authored-by: Claude <noreply@anthropic.com>, auteur et committer restent humains, etscripts/provenance.py archivea été lancé