-
Notifications
You must be signed in to change notification settings - Fork 10.3k
[Privacy Gateway] onboarding guide #18646
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 2 commits
1209e38
ab9c078
dad28d4
6bcd48b
66a2b81
a376513
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,7 +2,7 @@ | |
| title: Get started | ||
| pcx_content_type: get-started | ||
| sidebar: | ||
| order: 3 | ||
| order: 2 | ||
|
|
||
| --- | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,79 @@ | ||
| --- | ||
| title: Privacy Proxy Onboarding Guide | ||
| pcx_content_type: how-to | ||
| sidebar: | ||
| order: 3 | ||
|
|
||
| --- | ||
|
|
||
| ## System overview | ||
|
|
||
| The Cloudflare Privacy Proxy consists of a generic HTTPS CONNECT (and CONNECT-UDP ) proxy. | ||
| These may be used to ensure that knowledge of sensitive user information leaked in web traffic is not only available to those that need it to function. | ||
|
|
||
| A high level overview of the system is shown below. Control plane services are shown in orange, whereas dataplane services are shown in blue. | ||
deadlypants1973 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
|  | ||
|
|
||
| The following components comprise the Privacy Proxy system: | ||
|
|
||
| - **Client**: The end-user making HTTP requests via the Privacy Proxy from within a web browser and/or other supported client. | ||
| - **Attester**: The client-facing service that authenticates the validity of end-user accounts, validates entitlements, and requests a PAT from the issuer on behalf of the end-user. Not operated by Cloudflare. | ||
deadlypants1973 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - **Privacy API**: Cloudflare service that issues PATs to the client for redemption against the Privacy Proxy service. This service mints Private Access Tokens (PATs) using the RSA blind signature protocol. | ||
deadlypants1973 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - **Privacy Proxy**: The HTTP CONNECT-based proxy service running on Cloudflare’s edge. This service validates the PAT passed by the client, enforces any double spend prevention necessary for the token. The service handles proxying of the wrapped HTTP request, as well as selection of the egress path and IP. | ||
hyperlint-ai[bot] marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
deadlypants1973 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - **Origin**: The external (target) website for the end-user request. | ||
|
|
||
| DNS resolution uses [Cloudflare’s public resolver (1.1.1.1)](/1.1.1.1/) infrastructure for name resolution. | ||
hyperlint-ai[bot] marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ### System architecture | ||
|
||
|
|
||
|  | ||
|
|
||
| ### Client initialization | ||
|
|
||
| A client requires configuration data (the region public key) to request tokens. The key is used to initialize the request for blinded tokens from the Privacy API. | ||
deadlypants1973 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| The client should periodically refresh this public key, especially after IP address changes, since Cloudflare will use the IP address to map to the region. | ||
|
||
|
|
||
| This key should be kept in the client session across multiple requests. | ||
deadlypants1973 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
|  | ||
|
|
||
| ### Token issuance | ||
|
|
||
| After the client is configured, it will need privacy tokens in order to make requests. | ||
|
|
||
| When the token pool is low/empty, the client can use the stored region public key to create a batch of new blinded token requests to send to the Privacy API through the Token Proxy. | ||
deadlypants1973 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| The Privacy API signs the tokens and returns them to the client, which can store them in a pool for later use. | ||
|
||
|
|
||
|  | ||
|
|
||
| ### Example client code | ||
|
|
||
| Cloudflare will provide access to a MASQUE client, which can be used in mobile client code to connect to the MASQUE proxy provided by Cloudflare. For example: | ||
|
|
||
| ```sh | ||
| cargo run --bin quiche-client -- \ | ||
| --no-verify \ | ||
| --connect-to masque-relay.cloudflare.com \ | ||
deadlypants1973 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| --connect-type=HTTP \ | ||
| https://example.com | ||
| ``` | ||
|
|
||
| ### HTTP (Web) request flow | ||
|
|
||
| Once the client needs to make a connection to a new server, it can connect to the Cloudflare Proxy service and request a connection to the origin with a token in the ` Proxy-Authorization ` HTTP request header. | ||
deadlypants1973 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| This connection can be kept alive for multiple requests/responses from the server. | ||
|
|
||
|  | ||
|
|
||
| ## Environments | ||
|
|
||
| Cloudflare will provide access to both development and production environments. | ||
| Credentials are shared across both environments. | ||
|
|
||
| | Environment | Endpoint | Description | | | ||
| |--------------------- | -------------- |-----------| | ||
| | | | | | ||
Uh oh!
There was an error while loading. Please reload this page.