-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Labels
developmentStandard developmentStandard developmentepicBig issue with multiple subissuesBig issue with multiple subissues
Description
Specification
According to #779, there needs to be a way for nodes to bootstrap into a network via obtaining a ClaimNetworkAccess token.
There are 2 RPC calls that should implement this:
SignClaimNetworkAccessInitial- An RPC call from a node to a seednode that requests a half-signedClaimNetworkAccesstoken to be fully signed by the seednode.SignClaimNetworkAccessFinal- An RPC call from a seednode to a node that contains the fully signedClaimNetworkAccesstoken designated to the node.
There is a reason that these 2 calls are separate unary calls rather than a single unary call. That being that in order to implement a CSR-like mechanism for ClaimNetworkAccess token signing, we may want for a human in the loop to manually approve or deny requests for individual nodes to join a network. Hence, we want for the node to receive the token from the seednode whenever the node is online to accept, even after a long response time from the seednode.
When Node A attempts to join a network:
- Node A sends a
SignClaimNetworkAccessInitialcall to seed node B. - Seed node B may sign or not sign the token based on it's discretion.
- Seed node B waits until Node A is online and a connection with it is formed.
- Seed node B sends a
SignClaimNetworkAccessFinalcall to node A. - Node A reads the fully signed token and stores it in it's sigchain.
By implementing this, we have several flows we can end up implementing:
- This is just the standard accept-all flow. The node is immediately given a Network Access Token upon requesting

- The await acceptance flow is an example of having a third party service that the seednodes can notify in order to request approvals for network access token requests:

- We can take advantage of the sigchains on nodes to determine if a node is signed into the user of an external IDP. Since we have 2 separate RPC calls for the requesting and providing of the Network Access Tokens, we can simply embed information in the response of the request call to tell that the client needs to authenticate.

Additional context
Tasks
- ...
- ...
- ...
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
developmentStandard developmentStandard developmentepicBig issue with multiple subissuesBig issue with multiple subissues