From 6ac0f969a46a79f03690f3a5b17b7901a1891e6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Friedrich=20Dreyer?= Date: Mon, 27 Apr 2020 16:10:58 +0200 Subject: [PATCH] add initial request flow docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörn Friedrich Dreyer --- docs/request-flow.md | 76 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 docs/request-flow.md diff --git a/docs/request-flow.md b/docs/request-flow.md new file mode 100644 index 0000000000..32bb12192b --- /dev/null +++ b/docs/request-flow.md @@ -0,0 +1,76 @@ +--- +title: "Request Flow" +date: 2020-04-27T16:07:00+01:00 +weight: 45 +geekdocRepo: https://github.com/owncloud/ocis +geekdocEditPath: edit/master/docs +geekdocFilePath: request-flow.md +--- + + +## Request Flow + +The following sequence diagram describes the general request flow: + +{{< mermaid class="text-center">}} +sequenceDiagram + %% we have comments!! \o/ + participant user as User + participant client as Client + participant proxy as ocis-proxy + participant idp as IdP + participant accounts as ocis-accounts + participant ldap as corporate LDAP server + + user->>+client: What is the content of my home? + + client->>+proxy: PROPFIND
Bearer auth using oidc auth token + Note right of client: What is in a bearer token?
The spec recommends opaque tokens.
So it is just random byte noise. + %% Mention introspection endpoint for opaque tokens + %% konnectd uses jwt, so we can save a request + %% either way the token can be used to look up the sub and iss of the user + + %% or is token check enough? + proxy->>+idp: GET /userinfo + idp-->>-proxy: JSON response + Note right of proxy: the result contains
the sub of the user + %% see: https://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse + + proxy->>+accounts: TODO API call to exchange sub@iss with account UUID + + alt internal account + accounts->>+ldap: is user allowed to use ocis + ldap-->>-accounts: yes/no - group based + else guest account + accounts->>accounts: check if is valid guest account + end + + + accounts-->>-proxy: new or existing account UUID / error + Note right of accounts: actually this provisions
the account including
displayname, email and
sub@iss if the user is
allowed to login, based
on group membership
in the ldap server + + + Note right of proxy: the proxy MUST
authenticate users
using ocis-accounts
because it needs to
decide where to
send the request + + Note right of proxy: forward request to
ocis or oc10 + %% what if oc10 does not support a certain request / API + alt user is migrated + + Note right of proxy: mint an internal jwt
token that includes
the UUID and username + proxy->>+reva: PROPFIND
Bearer auth using internal JWT + reva-->>-proxy: Multistatus response + + else user is not migrated + + Note right of proxy: forward existing bearer auth? + proxy->>+oc10: PROPFIND
Bearer auth using internal JWT + %% TODO auth using internal token? + oc10-->>-proxy: Multistatus response + + end + + + proxy-->>-client: Multistatus response + + client-->>-user: List of Files X, Y, Z ... +{{< /mermaid >}} \ No newline at end of file