INTEGRITY Dokumentace

Testování produkčního nasazení

Tento návod popisuje, jak získat token z vašeho nasazení provozovaného Cloudflare. V této fázi jste již s Cloudflare společně vybudovali a nasadili následující komponenty. Podle tohoto návodu ověřte, že nasazení token skutečně vydá a uplatní od začátku do konce.

Privacy Pass v současnosti není samoobslužný produkt: nasazení do produkčního prostředí probíhá formou řízené spolupráce s Cloudflare. Pokud si chcete jen vyzkoušet, jak Privacy Pass funguje, bez jakéhokoli nastavování, přejděte na Začínáme.

Kontaktujte nás ↗ a požádejte o přístup, abyste získali konfiguraci svého vydavatele.


Než začnete

Co zajišťuje Cloudflare:

Co provozujete nebo potřebujete mít připravené:

Implementujte Klienta pomocí knihovny Privacy Pass pro váš stack:


1. Zjištění konfigurace vydavatele

Každý vydavatel zveřejňuje svou konfiguraci na standardním directory endpointu. Tento endpoint je veřejný, takže si jej můžete stáhnout, ověřit tak dostupnost vydavatele a přečíst jeho veřejné klíče:

curl https://your-issuer.example.com/.well-known/private-token-issuer-directory

Odpověď obsahuje endpoint pro žádost o token a veřejné klíče issuera. Typ tokenu 2 je Blind RSA:

{
  "issuer-request-uri": "/token-request",
  "token-keys": [
    {
      "token-type": 2,
      "token-key": "<base64url-encoded public key>",
      "not-before": 1700000000
    }
  ]
}

Podle těchto klíčů bude váš Origin ověřovat uplatněné tokeny.


2. Vyžádání a uplatnění tokenu

V tomto nasazení Klient nikdy nekontaktuje vydavatele přímo. Získání tokenu je zpáteční cesta přes všechny čtyři role:

  1. Origin vrací WWW-Authenticate výzvu.
  2. Klient dokončí atestaci pomocí váš Attester a odešle mu zaslepený požadavek na token.
  3. Ověřovatel ověří Klienta, poté se autentizuje u vydavatele (například pomocí mTLS) a přeposílá požadavek na /token-request koncový bod.
  4. Vydavatel podepíše zaslepený požadavek a vrátí jej; Klient jej odslepí, aby získal finální token, a poté jej uplatní u Originu.
 Origin              Client              Attester            Issuer
   │                   │                    │                  │
   │- TokenChallenge ─>│                    │                  │
   │                   │<=== Attestation ==>│                  │
   │                   │                    │── TokenRequest ─>│
   │                   │                    │<─ TokenResponse ─│
   │                   │<── TokenResponse ──│                  │
   │<─ Request+Token -─│ [finalize token]   │                  │
   │────- 200 OK ────->│                    │                  │

V tomto příkladu Client pomocí knihovny TypeScript sestaví zaslepenou žádost o token a odešle ji vašemu Attesterovi, který ji přeposílá issuerovi a vrací podepsanou odpověď:

import { publicVerif } from '@cloudflare/privacypass-ts';
const { BlindRSAMode, Client } = publicVerif;

// Declare your own sendToAttester transport — see the note below.
declare function sendToAttester(tokenRequest: Uint8Array): Promise<Uint8Array>;

// `tokenChallenge` comes from the Origin's WWW-Authenticate header.
// `issuerPublicKey` is the issuer's public key bytes (from the directory in Step 1).
const client = new Client(BlindRSAMode.PSS);
const tokenRequest = await client.createTokenRequest(tokenChallenge, issuerPublicKey);

// Send the blinded request to your Attester. It verifies the client, proxies the
// request to the issuer, and returns the issuer's signed token response.
const tokenResponseBytes = await sendToAttester(tokenRequest.serialize());

// Deserialize and unblind to recover the finalized token.
const tokenResponse = client.deserializeTokenResponse(tokenResponseBytes);
const token = await client.finalize(tokenResponse);

Klient poté token uplatní tak, že ho odešle Origin v Authorization hlavičku. Origin (nebo Cloudflare na hraně, viz Modely nasazení) ověří podpis podle veřejného klíče vydavatele a odpoví 200 OK.


3. Ověření funkčnosti

Že vydání a uplatnění tokenu funguje od začátku do konce, potvrzují dva signály:

Dostupnost adresářového endpointu můžete ověřit pomocí demo nástroj Privacy Pass ↗ k načtení adresáře vydavatele.