LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Blog Overview /Cloud & AI / Identifying Bots with Digital Signatures: How Web...
Read this article in other languages:

Identifying Bots with Digital Signatures: How Web Bot Auth Works

Identifying Bots with Digital Signatures: How Web Bot Auth Works

Management Summary

Web Bot Auth gives automated website requests a verifiable digital signature. It can help website operators distinguish some automated visitors in reports and apply appropriate access rules as software agents become more common. The signature provides evidence about the signing key and parts of the request, but does not by itself establish a trustworthy operator or permission to act. Requests without signatures can also come from software, so the method adds evidence rather than separating all humans from all bots.

Contents
  1. Three headers with different roles
  2. The draft and the product profile differ
  3. What successful verification actually connects
  4. Coverage and reuse
  5. Verification before an access decision
  6. Questions and answers
  7. Sources

An automated browser can execute JavaScript and therefore appear similar to a human visit in web analytics. This is not inevitable: measurement setup, bot detection and executed actions determine collection. Web Bot Auth adds a cryptographically verifiable identifier for signed requests to those other signals.

The central limit is straightforward: a valid signature demonstrates use of a matching private key for specific message components. It does not establish a verified real-world identity, access permission or harmless behavior.

Signature verification: key, scope, time and policy
A key association and covered components support verification; access permission remains a separate decision.

Three headers with different roles

The foundation is RFC 9421, a published standard for HTTP Message Signatures. Signature-Agent identifies a source for the public verification key. Signature-Input lists covered components and parameters such as creation time, expiry and key identifier. Signature contains the actual signature value.

Ed25519 is one algorithm in use, not a universal restriction of RFC 9421. A verifier needs the algorithm required by the agreed profile, a public key with an authenticated association and exactly the same signature base. The sender signs with a secret private key; the recipient checks the result with the corresponding public key. The signature base is the exact text assembled from the covered components and parameters. Verification does not create a new signature with the public key.

The draft and the product profile differ

As of October 24, 2026, the IETF lists draft-ietf-webbotauth-httpsig-protocol-00, dated September 1, 2026, as a working-group draft. An adopted WG draft therefore exists, but this profile is not yet a completed RFC. The earlier architecture draft has been replaced. The WG draft requires a dictionary form of Signature-Agent; Cloudflare’s currently documented product verification instead requires a single structured string and rejects the dictionary form.

The following lines compare only those formats. This is not a complete signed request: the signature value, time parameters and key material are intentionally absent.

Text
IETF WG draft 00 — dictionary member:
Signature-Agent: sig="https://agent.example"
Covered component: "signature-agent";key="sig"

Cloudflare documented product profile — structured string:
Signature-Agent: "https://agent.example"
Covered component: "signature-agent"

Directory mode:
https://agent.example/.well-known/http-message-signatures-directory
Content-Type: application/http-message-signatures-directory+json

The fixed path applies to directory mode. The current WG draft also describes other key-discovery mechanisms. Integration depends on the supported profile, version and registration requirements. Cloudflare’s Verified Bot process requires registration; publishing an arbitrary key is insufficient.

What successful verification actually connects

A securely resolved HTTPS directory associates a URL with a published key. A matching signature associates that key with the covered components. The signing-key holder and domain administrator need not be the same person or organization. Association with a known company requires additional trusted information.

The key identifier alone is also insufficient: a cache must retain the verified URL-to-key association. Reusing a known key under a newly asserted URL must not create a new identity. Fetching a directory neither proves intent nor replaces local access policy.

Coverage and reuse

A signature covering only @authority and the agent reference does not bind the method, path or message content. While time and other policy checks still pass, copied headers may therefore fit other requests to the same authority (hostname and any specified port). This does not prove that the original signer sent each of those requests.

Additional components such as @method and @target-uri narrow that scope. A signed Content-Digest can cover content; the recipient must also compare the digest with the actual received content. This does not necessarily require buffering the entire content in memory: hashing can proceed incrementally, although content verification finishes only after the final byte.

expires limits the duration of reuse but does not prevent repetition within the window. A nonce is intended for one-time use. It helps prevent copied requests only if the server checks it using an appropriate strategy. Cloudflare currently documents no database check for previously used nonces and recommends short lifetimes.

A leaf stencil has been used to spray the same pattern in three places on a wall. Likewise, a signature that covers only the host name binds neither the path nor the type of request.
A leaf stencil has been used to spray the same pattern in three places on a wall. Likewise, a signature that covers only the host name binds neither the path nor the type of request.

Verification before an access decision

  1. Structured parsing according to the supported profile, followed by checks of required components, parameters and allowed algorithms.
  2. Safe key discovery over HTTPS, with permitted destinations, bounded response sizes and timeouts. Client-controlled URLs must not expose internal services. The current WG draft forbids automatically following redirects during discovery.
  3. Verification of the URL-to-key association, signature base and cryptographic signature; time checks covering creation, expiry and permitted clock skew.
  4. Content-digest and replay checks required by the selected profile, followed by local access, rate-limit and logging rules.

An established library reduces serialization mistakes but does not replace profile checks, key rotation or safe cache rules. Invalid and unsupported evidence remain separate states; neither automatically means human traffic.

Questions and answers

Is a known operator’s domain in the header sufficient?

No. The header initially makes a claim. A securely established URL-to-key association and a valid signature over the required components are necessary. Delegated or compromised keys and copied, still-valid signatures limit conclusions about the actual sender.

Is every signed request permitted?

No. Checking a request’s key association and deciding which actions are permitted are separate decisions: authentication and authorization. A recognized agent can still perform unwanted scraping or exceed a rate limit. The signature supplies a basis for policy, not general permission.

Can agents be separated in analytics reports?

Verification can take place at the server or a fronting proxy. A controlled measurement integration can distinguish valid, invalid, unsupported and unsigned states. A client-side flag alone is not reliable authentication evidence. Missing signatures do not prove human visits, and other detection methods remain possible. Shared page caches must not pass one request’s verification result to unrelated visits.

Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in touch

A question or an idea for a web project? Tell me a little about it. This form uses reCAPTCHA and formconfirmed to protect against spam.

Write a comment

Experience with other models or providers and questions about the implementation are welcome here.

The email address is not published. Required fields are marked with an asterisk.

LUKASWOJCIK.COM · NEWSLETTER

Fresh ideas in your inbox

New articles, practical tools and updates from the projects.

Choose topics (optional)
No selection: all topics.

Subscription starts after confirmation by email. · Privacy

Privacy · Newsletter

Email address, language, selected topics and subscription/confirmation dates are stored to deliver the newsletter. Double opt-in is required. Every issue includes an immediate unsubscribe link. Formconfirmed checks the signup for spam. No email open or click tracking.

Read the full privacy policy ↗