E16 · Draft vector
3 minRun the vector block.
Done when: vetor E.2.1: confere and saída: 0.
Lesson 6 · 18 min
Anyone can write a User-Agent. Web Bot Auth is the IETF proposal for a bot to sign each request with a key published at its own URL. It is still a draft (-00, September 2026). In this lesson you check a signature against the draft's test vector and see on a local server what it proves and what it doesn't.
Start the lesson
Goal: check a Web Bot Auth signature against the draft's test vector and verify signed requests on a local server, knowing what the signature does not prove.
draft-ietf-webbotauth-httpsig-protocol-00 (September 1, 2026). Click each step.
IETF group draft (Cloudflare and Google), expires March 5, 2027. Not an RFC.
Appendix E.2.1: Ed25519 with the RFC 9421 public test key (B.1.4). Only node:crypto, no packages.
cd ~/projetos/formacao-webmcp-seguranca-v72/kit node scripts/wba.mjs vetor; echo "saída: $?"
== node v24.13.0 · draft-ietf-webbotauth-httpsig-protocol-00 (01/09/2026) keyid calculado: poqkLGiymh_W0uP6PZFw-dvez3QJT5SolqXBCW38r0U · confere assinatura: RdNFx5Bj6au3YgAMQL/RzmUl… · confere vetor E.2.1: confere saída: 0
Ed25519 is deterministic: same key and same base give the same signature. If your implementation reproduces the vector, it builds the signature base the way the draft does. The test key never goes to production (appendix C.12 of the draft).
A new key on every run. The origin already has the agent's directory, as the draft allows (§4.4); nothing leaves your machine.
cd ~/projetos/formacao-webmcp-seguranca-v72/kit node scripts/wba.mjs demo; echo "saída: $?"
== node v24.13.0 · draft-ietf-webbotauth-httpsig-protocol-00 (01/09/2026) · origem http://127.0.0.1:36913 1 · sem assinatura → anônimo: sem assinatura (a política do site decide) 2 · assinado, válido → identificado: https://agente.exemplo (chave gw6T0rIc…) 3 · mesma assinatura em outro caminho → recusado: assinatura não confere 4 · assinatura vencida → recusado: assinatura vencida 5 · chave que a origem não conhece → recusado: chave desconhecida para https://agente.exemplo 6 · replay dentro da validade → identificado: https://agente.exemplo (chave gw6T0rIc…) 7 · assinatura mínima (só @authority) usada em /admin → identificado: https://agente.exemplo (chave gw6T0rIc…) 7/7 casos como esperado · replay dentro da validade: aceito saída: 0
Cases 6 and 7 are the draft's warning (§5.2): within the validity window, anyone who saw the request can repeat it; and a signature that covers only @authority is valid for any path on the site. That is why: short validity, with @method + @path covered, and the origin can require those components.
Since July 1, 2026, agents signed with Web Bot Auth count as Verified, with a new field: Direct (a single operator) or Intermediary (a service that many users drive).
With Intermediary, you can trust the operator and not each user who drives the agent. Cloudflare calls this transitive trust.
Anonymous still exists: signing is the bot's choice. Write your policy for the three cases: anonymous, signed and known, signed and unknown.
robots.txt says for what purpose each bot may come; the signature says who it is. robots in depth is covered in the inemaSEO Track.
Check and decide.
Run the vector block.
Done when: vetor E.2.1: confere and saída: 0.
Run the demo block and explain, in one sentence each, why cases 6 and 7 were accepted.
Done when: 7/7 casos como esperado · replay dentro da validade: aceito.
Create politica-bots.md with three lines, one per case, starting with anônimo:, assinado e conhecido: and assinado e desconhecido:, each with what the site does (allow, limit, block, on which pages). The prefixes stay in Portuguese because the check command looks for them.
Done when: grep -c -E "^(anônimo|assinado e conhecido|assinado e desconhecido):" politica-bots.md → 3.
Question 1 of 4
What does a valid Web Bot Auth signature prove?skill
Question 2 of 4
Why was the minimal signature (only @authority) accepted on /admin in case 7?
Question 3 of 4
What is the status of Web Bot Auth on October 19, 2026?
Question 4 of 4
On Cloudflare, what changes when the agent is Intermediary?
Choose an answer. The explanation appears after you try.