Skip to content
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

Node connection requesting access to a private network #781

Open
amydevs opened this issue Jul 29, 2024 · 5 comments
Open

Node connection requesting access to a private network #781

amydevs opened this issue Jul 29, 2024 · 5 comments
Labels
development Standard development

Comments

@amydevs
Copy link
Contributor

amydevs commented Jul 29, 2024

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:

  1. SignClaimNetworkAccessInitial - An RPC call from a node to a seednode that requests a half-signed ClaimNetworkAccess token to be fully signed by the seednode.
  2. SignClaimNetworkAccessFinal - An RPC call from a seednode to a node that contains the fully signed ClaimNetworkAccess token 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:

  1. Node A sends a SignClaimNetworkAccessInitial call to seed node B.
  2. Seed node B may sign or not sign the token based on it's discretion.
  3. Seed node B waits until Node A is online and a connection with it is formed.
  4. Seed node B sends a SignClaimNetworkAccessFinal call to node A.
  5. 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:

  1. This is just the standard accept-all flow. The node is immediately given a Network Access Token upon requesting image
  2. 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: image
  3. 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.
    image

Additional context

#779

Tasks

  1. ...
  2. ...
  3. ...
@amydevs amydevs added the development Standard development label Jul 29, 2024
Copy link

linear bot commented Jul 29, 2024

@tegefaulkes tegefaulkes mentioned this issue Jul 30, 2024
5 tasks
@tegefaulkes tegefaulkes changed the title Network Node Authentication/Bootstrapping Requesting access to PKE network proceedure Aug 14, 2024
@tegefaulkes
Copy link
Contributor

tegefaulkes commented Aug 14, 2024

I'm going to consolidate this and #780 REF ENG-371 together into this issue. They are two parts of the same problem.

@tegefaulkes
Copy link
Contributor

tegefaulkes commented Aug 14, 2024

@amydevs we'll need to go over this to expand it out and tie it into #784 work.

Some notes about the spec so far.

The structure of these claims is being addressed in #779 . so this issue focuses on addressing the logic for issuing the claimNetworkAuthority and the claimNetworkAccess. Issuing both of these should be allowed during the NodeConnection's authenticating stage. Completion of this will depend on the authentication stage update to the nodes domain in #782

So we'll need to update the spec to focus solely on the issuing of these claims and how to authenticate that.

@CMCDragonkai
Copy link
Member

This issue seems like it's better suited to be in the PKE repo? If it has information on proprietary details of PKE, it should be in PKE. Plus PK shouldn't be special casing any particular PKE behaviour here.

@tegefaulkes
Copy link
Contributor

This issue focuses on how the nodes interact to request access. PKE only really ties into how we authenticate that request.

@CMCDragonkai CMCDragonkai changed the title Requesting access to PKE network proceedure Node connection requesting access to a private network Sep 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
development Standard development
Development

No branches or pull requests

3 participants