Project

General

Profile

Federated identity » History » Version 5

Peter Amstutz, 06/19/2017 06:23 PM

1 1 Tom Clegg
h1. Federated identity
2
3
A person should be able to create an account and get a token from a single identity provider, and use that token to access private/protected resources on multiple Arvados clusters.
4
5
Motivating use cases:
6
* A user on cluster B shares a project with a user on cluster A.
7
* A container running on cluster A reads and writes data on cluster B.
8
* A user logged in to Workbench A can search/view/download/upload collections at cluster B.
9
10
Configuration examples:
11
* An organization has 5 clusters, but only one of them has user accounts and roles in its database.
12
* An on-premise cluster runs containers that use public data stored in the cloud (without mirroring the data locally).
13
14
h2. Design sketch
15
16
Each Arvados client must be able to prove to cluster B that it is authorized by cluster A to act on behalf of a user account which is controlled by cluster A. This must not involve giving enough information to cluster B to act on behalf of the user account: for example, the client cannot simply give cluster B its cluster A token for the purpose of doing a canary query.
17 2 Tom Clegg
18
h2. Protocol ideas
19
20
"SRP-6a":https://en.wikipedia.org/wiki/Secure_Remote_Password_protocol
21
22 3 Tom Clegg
"Salted tokens": instead of passing its literal token, the client passes the token UUID and @HMAC(token, "bbbbb")@ when sending a request to cluster B (where "bbbbb" is cluster B's cluster ID / UUID prefix). Cluster B validates the request by passing those two parameters untouched to a "verify request" ("no-op") endpoint at cluster A.
23 4 Tom Clegg
24 5 Peter Amstutz
(PA) an even simpler approach would be be to contact cluster A to get a scoped token which only allows "GET /users/current" on cluster A but is accepted by cluster B as an [all] token for that user.
25
26
27 4 Tom Clegg
h2. TODO
28
29
Things to address
30
* how to sync groups
31
* diagrams
32
* mnemonic cluster names / more concrete examples (including who is reachable on the internet)
33
* [how] do you get a list of users you can share stuff with?
34
* clarify what UUIDs look like (some people have A uuids, some have B uuids)