diff --git a/docs/guide/request-signing.md b/docs/guide/request-signing.md index 15e521a..563f736 100644 --- a/docs/guide/request-signing.md +++ b/docs/guide/request-signing.md @@ -52,6 +52,38 @@ Keys are stored in two separate Fastly stores: └─────────────────────┘ ``` +### Signing Flow (Prebid) + +The following diagram shows how request signing works for Prebid auction requests, from the Trusted Server through to DSP verification: + +```mermaid +sequenceDiagram + participant TS as Trusted Server
(Publisher Domain) + participant PBS as Prebid Server + participant DSP as DSP + + Note over TS: Signs request using
Ed25519 private key + + TS->>PBS: POST /openrtb2/auction + Note right of TS: OpenRTB body includes
ext.trusted_server {
signature,
kid,
request_host,
request_scheme
} + + PBS->>DSP: POST /openrtb2/auction + Note right of PBS: Forwards full OpenRTB body
including ext.trusted_server + + Note over DSP: Extracts signature, kid,
and site.domain from request + + opt JWKS not cached (10 min TTL) + DSP->>TS: GET /.well-known/trusted-server.json + TS-->>DSP: JWKS response + Note left of DSP: {keys: [{
kid,
kty: "OKP",
crv: "Ed25519",
x: "public_key"
}]} + end + + Note over DSP: Looks up public key by kid
Verifies Ed25519 signature
over request + + DSP-->>PBS: Bid Response + PBS-->>TS: Bid Response +``` + ## Signing Requests ### Basic Usage