-
Notifications
You must be signed in to change notification settings - Fork 0
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
Client should authorize Gateway to space/content/serve
Spaces by default
#158
Comments
space/content/serve
space/content/serve
space/content/serve
space/content/serve
space/content/serve
Spaces by default
Gateway Content Serve Authorization Flowflowchart TD
subgraph Client Side
A[User] -->|Creates Space & Authorizes Gateway| B[w3up-client]
end
subgraph Cloudflare Workers
C[Access/Delegate Endpoint]
F[Freeway Worker]
end
subgraph KV Storage
D[Delegations Store]
end
B -->|UCAN: access/delegate| C
C -->|Validates Space & Proof Chain| E[Validate Space Exists & Capability]
E -->|Stores Valid Delegation| D
F -->|Retrieves Delegation| D[Delegations Store]
Explanation
Key Considerations
|
### Context To enable a gateway to serve content from a specific space, we must ensure that the space owner delegates the `space/content/serve/*` capability to the Gateway. This delegation allows the Gateway to serve content and log egress events appropriately. I created a new function `authorizeContentServe` for this implementation and included it in the `createSpace` flow. This is a breaking change because now the user is forced to provide the DIDs of the Content Serve services, and the connection, or skip the authorization flow. Additionally, with the `authorizeContentServe` function, we can implement a feature in the Console App that enables users to explicitly authorize the Freeway Gateway to serve content from existing/legacy spaces. ### Main Changes - **New Functionality:** Added a new function, `authorizeContentServe`, in the `w3up-client` module to facilitate the delegation process. Integrated it with the `createdSpace` flow. - **Testing:** Introduced test cases to verify the authorization of specified gateways. - **Fixes:** Resolved issues with previously broken test cases (Egress Record). ### Related Issues - storacha/project-tracking#158 - storacha/project-tracking#160
Done. |
### Context To enable the gateway to serve content from a specific space, the space owner must delegate the `space/content/serve/*` capability to the Gateway. This delegation ensures the Gateway has the authority to serve the content and log egress events accurately. This PR introduces a new handler to process POST requests to the server's root path. The handler acts as a UCAN Invocation handler, processing `access/delegate` invocations and extracting relevant delegation proofs. If a delegation proof is valid, it is stored in Cloudflare KV, allowing other handlers to retrieve and verify the proof to determine whether content should be served and egress logged. Note: It doesn't cover the token verification. ### Main Changes #### **New Functionality** - Added `withUcanInvocationHandler.js` to process `access/delegate` invocations: - Validates delegation proofs. - Stores valid proofs in a Cloudflare KV namespace dedicated to `content serve` delegations. - Feature Flag: `FF_DELEGATIONS_STORAGE_ENABLED` if enabled, the new `withDelegationsStorage.js` handler will be used to find delegations in KV, and the existing `withDelegationsStubs.js` will be disabled. ### Related Issues - storacha/project-tracking#158 - storacha/project-tracking#160
To enable a gateway to serve content from a specific space, we must ensure that the space owner delegates the `space/content/serve/*` capability to the Gateway. This delegation allows the Gateway to serve content and log egress events appropriately. I created a new function `authorizeContentServe` for this implementation and included it in the `createSpace` flow. This is a breaking change because now the user is forced to provide the DIDs of the Content Serve services, and the connection, or skip the authorization flow. Additionally, with the `authorizeContentServe` function, we can implement a feature in the Console App that enables users to explicitly authorize the Freeway Gateway to serve content from existing/legacy spaces. - **New Functionality:** Added a new function, `authorizeContentServe`, in the `w3up-client` module to facilitate the delegation process. Integrated it with the `createdSpace` flow. - **Testing:** Introduced test cases to verify the authorization of specified gateways. - **Fixes:** Resolved issues with previously broken test cases (Egress Record). - storacha/project-tracking#158 - storacha/project-tracking#160
To enable a gateway to serve content from a specific space, we must ensure that the space owner delegates the `space/content/serve/*` capability to the Gateway. This delegation allows the Gateway to serve content and log egress events appropriately. I created a new function `authorizeContentServe` for this implementation and included it in the `createSpace` flow. This is a breaking change because now the user is forced to provide the DIDs of the Content Serve services, and the connection, or skip the authorization flow. Additionally, with the `authorizeContentServe` function, we can implement a feature in the Console App that enables users to explicitly authorize the Freeway Gateway to serve content from existing/legacy spaces. - **New Functionality:** Added a new function, `authorizeContentServe`, in the `w3up-client` module to facilitate the delegation process. Integrated it with the `createdSpace` flow. - **Testing:** Introduced test cases to verify the authorization of specified gateways. - **Fixes:** Resolved issues with previously broken test cases (Egress Record). - storacha/project-tracking#158 - storacha/project-tracking#160
…ay (#99) To enable a gateway to serve content from a specific space, we must ensure that the space owner delegates the `space/content/serve/*` capability to the Gateway. This delegation allows the Gateway to serve content and log egress events appropriately. I created a new function `authorizeContentServe` for this implementation and included it in the `createSpace` flow. This is a breaking change because now the user is forced to provide the DIDs of the Content Serve services, and the connection, or skip the authorization flow. Additionally, with the `authorizeContentServe` function, we can implement a feature in the Console App that enables users to explicitly authorize the Freeway Gateway to serve content from existing/legacy spaces. - **New Functionality:** - Added a new function, `authorizeContentServe`, in the `w3up-client` module to facilitate the delegation process. Integrated it with the `createdSpace` flow. - It also sets the Storacha Gateway as the default content server service in case the user doesn't provide any in the `createSpace` call, and doesn't use the `skipGatewayAuthorization=true` flag. - **Testing:** Introduced test cases to verify the authorization of specified gateways. - **Fixes:** Resolved issues with previously broken test cases (Egress Record). ### Related Issues - storacha/project-tracking#158 - storacha/project-tracking#160 - storacha/project-tracking#207 - storacha#1604 - Resolves storacha/project-tracking#196
### Context We must ensure that the space owner delegates the `space/content/serve/*` capability to the Gateway. This delegation allows the Gateway to serve content and log egress events appropriately. ### Changes I've updated the CLI to enable the new gateway content serve authorization flow when creating a space. This is a breaking change because now the user is forced to provide the DIDs of the Content Serve services, and the service endpoint, or skip the authorization flow. ### Related Issues - storacha/project-tracking#158 - storacha/project-tracking#160 - storacha/project-tracking#207 - Resolves storacha/project-tracking#196
The Uploader says, "I generally want people to access the files I upload, so now that the Gateway will require authorization, I need to authorize it.
Acceptance Criteria
space/content/serve/*
must be stored in the Delegations Store (Freeway can learn aboutspace/content/serve/*
delegations #160), so the Gateway can find it, validate, and authorize the request.egress-traffic-events
store in DynamoDB each time the content is requested. Without the properspace/content/serve/*
delegation the egress event is not generated.Main Tasks
approved
: feat!: content serve authorization w3up#1590approved
: feat!: content serve authorization w3up#1590Open Questions
The text was updated successfully, but these errors were encountered: