Repository navigation
feat(ra-console): relais de l'enregistrement de clé vers ca-server - #29
Merged
Merged
Conversation
PhilippeVienne
force-pushed
the
feat/ra-console-squelette
branch
from
September 21, 2026 10:53
0eb8fae to
87c875e
Compare
POST /api/v1/webauthn/register/begin puis /finish (docs/WEBUI.md §5, §10) : l'invité présente son jeton d'invitation, et la console relaie à ca-server par le lien mTLS. Elle ne lit pas l'attestation et ne la comprend pas : ca-server la vérifie contre la liste blanche de modèles et range la clé, la console n'en garde rien. - la console reconstruit ce qu'elle relaie à partir de champs qu'elle a validés : Content-Type application/json exigé (pas d'envoi aveugle d'un formulaire piégé), champs connus seulement, jeton de 1 à 256 caractères, identifiant de cérémonie au format UUID, corps de 64 Kio au plus ; - un refus de ca-server (4xx) est rendu avec son code et son message ; une panne (5xx, injoignable, registre bloqué) devient un 502 ca_unavailable générique, sans adresse, sans cause ni divergence. Le jeton n'est ni journalisé ni renvoyé ; - le certificat que ca-server présente est contrôlé (politique, SAN, validité) à chaque réponse relayée, plus seulement à la sonde. Pas encore de limitation de débit sur ces routes anonymes (TODO).
Le clippy de Rust 1.98 (celui de la CI, toolchain stable) refuse une variante Err d'au moins 128 octets (result_large_err) ; celui de la 1.97 locale ne la connaissait pas. Le contrôle du Content-Type devient un booléen, et le refus 415 est construit par l'appelant. Comportement inchangé.
PhilippeVienne
force-pushed
the
feat/ra-console-relais-inscription
branch
from
September 21, 2026 11:15
a35a411 to
4a0fba2
Compare
PhilippeVienne
changed the base branch from
feat/ra-console-squelette
to
dev
September 21, 2026 11:15
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.
Contenu
Tranche 1b de
ra-console(docs/WEBUI.md §15 étape 1) :POST /api/v1/webauthn/register/beginpuis/finish. L'invité présente son jeton d'invitation, la console relaie àca-serverpar le lien mTLS (/internal/v1/register/*). Elle ne lit pas l'attestation et ne la comprend pas :ca-serverla vérifie contre la liste blanche de modèles et range la clé ; la console n'en garde rien.Content-Type: application/jsonexigé (pas d'envoi « aveugle » d'un formulaire piégé, qui ne peut pas déclarer du JSON sans pré-requête CORS), champs connus seulement, jeton de 1 à 256 caractères, identifiant de cérémonie au format UUID, corps de 64 Kio au plus. Elle ne fait jamais suivre tel quel ce qu'un navigateur lui envoie.ca-server(4xx) est rendu avec son code et son message, faits pour cela (jeton invalide, attestation refusée…) ; une panne (5xx, injoignable, registre bloqué) devient un502 ca_unavailablegénérique : ni adresse, ni cause, ni divergence du registre. Le jeton n'est ni journalisé ni renvoyé.ca-serverprésente est maintenant contrôlé (politique, SAN, validité) à chaque réponse relayée, plus seulement à la sonde :CaLink::sendfactorise l'appel.Points d'attention
ca-serverles refait de son côté (même limite, même parsing), donc ils ne sont pas observables depuis un test de bout en bout. Ils protègent la mémoire et le réseau interne de la console elle-même ; je les ai gardés pour cela.Vérifications
cargo fmt --check,cargo clippy --workspace --all-targets -- -D warnings,cargo test --workspace(avec PostgreSQL, 79 suites),cargo audit --ignore RUSTSEC-2023-0071: verts.ra-console→ lien mTLS → le vrai routeur interne deca-server, sur un vrai PostgreSQL et un authentificateur logiciel.ca-server), puis le jeton est consommé et son rejeu refusé sans jamais le renvoyer ;ca-server;ca-server(divergence du journal) ne fuit rien vers le navigateur ;ca-serverinjoignable :502générique, sans adresse ni port ni cause ni jeton (ce test ne demande aucune base).Content-Typenon exigé, champs inconnus relayés, détail des pannes relayé, jeton non borné, refus deca-servermasqué. Chacun fait échouer le test visé.