INTEGRITY Документация

Тестирование развертывания в продакшене

Это руководство описывает получение токена из вашего развертывания, управляемого Cloudflare. К этому моменту вы и Cloudflare уже совместно создали и настроили следующие компоненты. Используйте это руководство, чтобы убедиться, что развертывание полностью выдает и принимает токены.

На данный момент Privacy Pass не является продуктом самообслуживания: развертывание в продакшене выполняется в рамках управляемого сотрудничества с Cloudflare. Если вы просто хотите увидеть работу Privacy Pass без какой-либо настройки, обратитесь к Начало работы.

Свяжитесь с нами ↗ чтобы запросить доступ и получить конфигурацию своего издателя.


Перед началом работы

Что предоставляет Cloudflare:

Что должны обеспечить или настроить вы:

Реализуйте Клиента с помощью библиотеки Privacy Pass для вашего стека:


1. Обнаружение конфигурации издателя

Каждый эмитент публикует свою конфигурацию по стандартной конечной точке каталога. Эта конечная точка общедоступна, поэтому вы можете обратиться к ней, чтобы убедиться в доступности эмитента и получить его открытые ключи:

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

В ответе перечислены конечная точка запроса токена и открытые ключи издателя. Тип токена 2 это Blind RSA:

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

Это ключи, по которым ваш Источник будет проверять предъявляемые токены.


2. Запрос и предъявление токена

В этой схеме развертывания Клиент никогда не обращается к эмитенту напрямую. Получение токена представляет собой полный цикл через все четыре роли:

  1. Origin возвращает WWW-Authenticate проверка.
  2. Клиент завершает аттестацию с ваш Аттестатор и отправляет ему слепой запрос токена.
  3. Attester проверяет Клиента, затем проходит аутентификацию у издателя (например, по mTLS) и передаёт запрос на /token-request конечная точка.
  4. Издатель подписывает слепой запрос и возвращает его. Клиент снимает ослепление, чтобы получить готовый токен, а затем предъявляет его на Origin.
 Origin              Client              Attester            Issuer
   │                   │                    │                  │
   │- TokenChallenge ─>│                    │                  │
   │                   │<=== Attestation ==>│                  │
   │                   │                    │── TokenRequest ─>│
   │                   │                    │<─ TokenResponse ─│
   │                   │<── TokenResponse ──│                  │
   │<─ Request+Token -─│ [finalize token]   │                  │
   │────- 200 OK ────->│                    │                  │

В этом примере с использованием библиотеки TypeScript Клиент формирует запрос на слепой токен, затем отправляет его вашему Аттестатору, который перенаправляет его издателю и возвращает подписанный ответ:

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);

Затем Клиент предъявляет токен, отправляя его Источнику в Authorization заголовка. Origin (или Cloudflare на периферии сети, подробнее см. Модели развертывания) проверяет подпись по открытому ключу издателя и отвечает 200 OK.


3. Проверка работы

Два признака подтверждают, что выдача и предъявление токенов работают полностью:

Чтобы убедиться, что конечная точка каталога доступна, можно использовать демонстрационный инструмент Privacy Pass ↗ чтобы получить каталог издателя.