Topic category
Select which category your topic relates to:
Topic summary
Problem
Users will typically have an account on one node in the network. If they want to access resources from another node in the network (that aren't publicly available) they currently need to create a second account on the other node and log in there as well.
This creates an additional burden on the user:
- multiple logins may be required to complete a task that needs resources from multiple nodes
- multiple accounts need to be managed, passwords remembered, etc.
- when accessing restricted resources from outside the network, the user's workflow would need to handle different login settings if accessing resources from multiple nodes
This creates an additional burden on node administrators:
- they need to handle multiple account creation requests
Lastly, it leads to duplication of user accounts on the network that can cause some minor issues down the line (e.g. if we decide to have a mechanism to email all network users about technical issues, then some users will receive duplicate emails.)
We should implement a system where nodes can be "remote authenticators" for each other within the network and node administrators can authorize access to resources for users registered elsewhere on the network.
Additional information
Proposed Solution
Allow nodes to authenticate users for each other using tokens and provide authorization options that can be generalized to members of specific nodes or the network in general.
Proposed cross-network authn/z process:
- A user creates an account on node "A"
- The user requests an authentication token from node "A" which contains the following parts:
- a unique identifier for node "A" (not encrypted, scoped over the whole network)
- a unique identifier for the user (encrypted, scoped over node "A")
- The user attempts to access a resource on node "B" that is not publicly available, by including the token as part of the request
- Node "B" receives the request from the user and reads the first part of the token in order to determine which node has issued the token (node "A")
- Node "B" sends the token to node "A" for verification
- Node "A" checks that the token is associated with a valid user, not expired, etc. and responds to node "B" with the following information:
- a status code (success, failure, error, other?)
- the username of the associated user
- if the status is a success:
- Node "B" checks whether the user is authorized to access the requested resource
- if the status is not a success:
- the user is denied access to the resource
Proposed new authorization groups (in magpie):
- all users belong to the "network" group: this is similar to the "users" group on magpie but:
- the "users" group contains all users that have login credentials for the local node
- the "network" group contains all users that have login credentials for any node on the network
- each user with login credentials on node "A" belongs to the "node_A" group (where A can be any node name):
- a user with login credentials on node "A" will belong to the following groups on node "B": "network", "node_A"
- a user with login credentials on node "A" will belong to the following groups on node "A": "network", "users"
Process of authorizing a user on another node:
- A node administrator on a node can assign permissions as normal to any groups defined above ("network", "node_A", etc.)
- If a node administrator wants to assign permissions to a specific user from another node:
- the node administrator creates a new user in Magpie (store username and name of remote node that user belongs to)
- this new user does not have permission to log in to the current node but can now be associated with permissions if they are authenticated using the process described above.
Required changes:
- A mechanism to provide the tokens described above
- A mechanism to validate the provided tokens
- A mechanism to send these tokens to another node as a "remote authenticator" (this may be already possible through magpie?)
- Create an association in the magpie database between users and a node in the network (to differentiate users with the same username on different nodes).
- The authorization groups (see above) in magpie that don't require a user to exist in that specific magpie database in order to belong.
Most of the above changes should probably be handled by magpie/twitcher but we should discuss the best options.
This topic may be of special interest to @fmigneault @huard. Please feel free to tag others who may want to discuss this as well
Topic category
Select which category your topic relates to:
Topic summary
Problem
Users will typically have an account on one node in the network. If they want to access resources from another node in the network (that aren't publicly available) they currently need to create a second account on the other node and log in there as well.
This creates an additional burden on the user:
This creates an additional burden on node administrators:
Lastly, it leads to duplication of user accounts on the network that can cause some minor issues down the line (e.g. if we decide to have a mechanism to email all network users about technical issues, then some users will receive duplicate emails.)
We should implement a system where nodes can be "remote authenticators" for each other within the network and node administrators can authorize access to resources for users registered elsewhere on the network.
Additional information
Proposed Solution
Allow nodes to authenticate users for each other using tokens and provide authorization options that can be generalized to members of specific nodes or the network in general.
Proposed cross-network authn/z process:
Proposed new authorization groups (in magpie):
Process of authorizing a user on another node:
Required changes:
Most of the above changes should probably be handled by magpie/twitcher but we should discuss the best options.
This topic may be of special interest to @fmigneault @huard. Please feel free to tag others who may want to discuss this as well