Skip to content

Commit 93c8a2a

Browse files
committed
Refine adrs
Signed-off-by: Jörn Friedrich Dreyer <[email protected]>
1 parent b8e18a8 commit 93c8a2a

File tree

5 files changed

+64
-27
lines changed

5 files changed

+64
-27
lines changed

.adr-dir

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
docs/ocis/adr

docs/adr/0001-introduce-accounts-service.md renamed to docs/ocis/adr/0001-introduce-accounts-service.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
1-
# 1. Introduce an accounts service
1+
---
2+
title: "1. Introduce an accounts service"
3+
date: 2020-06-15T20:21:00+01:00
4+
geekdocRepo: https://github.com/owncloud/ocis
5+
geekdocEditPath: edit/master/docs/ocis/adr
6+
geekdocFilePath: 0001-introduce-accounts-service.md
7+
---
28

3-
* Status: superseded by [ADR-0003](0003-external-user-management.md) <!-- optional -->
4-
* Deciders: @butonic, @felixboehm, @micbar, @pmaier1 <!-- optional -->
5-
* Date: [2020-06-15](https://github.com/owncloud/ocis-accounts/pull/34/commits/2fd05e2b6fe2a47c687bd0c0bc5e1b5c48a585b2) <!-- optional -->
9+
* Status: superseded by [ADR-0003]({{< ref "0003-external-user-management.md" >}})
10+
* Deciders: @butonic, @felixboehm, @micbar, @pmaier1
11+
* Date: [2020-06-15](https://github.com/owncloud/ocis-accounts/pull/34/commits/2fd05e2b6fe2a47c687bd0c0bc5e1b5c48a585b2)
612

7-
Technical Story: [persist accounts](https://github.com/owncloud/ocis-accounts/pull/34) <!-- optional -->
13+
Technical Story: [persist accounts](https://github.com/owncloud/ocis-accounts/pull/34)
814

915
## Context and Problem Statement
1016

1117
To attach metadata like shares to users ownCloud relies on persistent, non-reassignable, unique identifiers for users (and files). Email und username can change when a user changes his name. But even the OIDC sub+iss combination may change when the IdP changes. While there is [an account porting protocol](https://openid.net/specs/openid-connect-account-porting-1_0.html) that describes how a relying party (RP) such as ownCloud should behave, it still requires the RP to maintain its own user identifiers.
1218

13-
## Decision Drivers <!-- optional -->
19+
## Decision Drivers
1420

1521
* oCIS should be a single binary that can run out of the box without external dependencies like an LDAP server.
1622
* Time: we want to build a release candidate asap.
@@ -27,16 +33,16 @@ To attach metadata like shares to users ownCloud relies on persistent, non-reass
2733

2834
Chosen option: "GLAuth wraps accounts service", because we need write access to provision guest accounts and GLAuth currently has no write support.
2935

30-
### Positive Consequences <!-- optional -->
36+
### Positive Consequences
3137

3238
* We can build a self contained user management in the accounts service and can adjust it to our requirements.
3339
* We do not rely on an LDAP server which would only be possible by implementing write support in the LDAP libraries used by GLAuth (hard to estimate effort, when will that be merged upstream).
3440

35-
### Negative Consequences <!-- optional -->
41+
### Negative Consequences
3642

3743
* We need to spend time on implementing user management
3844

39-
## Pros and Cons of the Options <!-- optional -->
45+
## Pros and Cons of the Options
4046

4147
### Accounts service wraps LDAP
4248

Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
1-
# 2. Persist accounts in a CS3 storage
1+
---
2+
title: "2. Persist accounts in a CS3 storage"
3+
date: 2020-08-21T20:21:00+01:00
4+
geekdocRepo: https://github.com/owncloud/ocis
5+
geekdocEditPath: edit/master/docs/ocis/adr
6+
geekdocFilePath: 0002-persist-accounts-using-cs3-storage.md
7+
---
28

3-
* Status: accepted <!-- optional -->
4-
* Deciders: @butonic, @felixboehm <!-- optional -->
5-
* Date: 2020-08-21 <!-- optional -->
9+
* Status: accepted
10+
* Deciders: @butonic, @felixboehm
11+
* Date: 2020-08-21
612

7-
Technical Story: [File system based indexing](https://github.com/owncloud/ocis-accounts/pull/92) <!-- optional -->
13+
Technical Story: [File system based indexing](https://github.com/owncloud/ocis-accounts/pull/92)
814

915
## Context and Problem Statement
1016

@@ -19,11 +25,11 @@ To set up High Availability (HA) or a geo-replicated setup we need to persist ac
1925

2026
Chosen option: "Persist users in a CS3 storage", because we have one service less running and can rely on the filesystem for geo-replication and HA.
2127

22-
### Positive Consequences <!-- optional -->
28+
### Positive Consequences
2329

2430
* We can store accounts on the storage using the CS3 API, pushing geo-distribution to the storage layer.
2531
* Backups of users and storage can be implemented without inconsistencies between using snapshots.
2632

27-
### Negative Consequences <!-- optional -->
33+
### Negative Consequences
2834

2935
* We need to spend time on implementing a reverse index based on files, and symlinks.

docs/adr/0003-external-user-management.md renamed to docs/ocis/adr/0003-external-user-management.md

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
1-
# 3. Use external User Management
1+
---
2+
title: "3. Use external User Management"
3+
date: 2020-12-09T20:21:00+01:00
4+
geekdocRepo: https://github.com/owncloud/ocis
5+
geekdocEditPath: edit/master/docs/ocis/adr
6+
geekdocFilePath: 0003-external-user-management.md
7+
---
28

3-
* Status: accepted <!-- optional -->
4-
* Deciders: @butonic, @micbar, @dragotin, @hodyroff, @pmaier1 <!-- optional -->
5-
* Date: 2020-12-09 <!-- optional -->
9+
* Status: accepted
10+
* Deciders: @butonic, @micbar, @dragotin, @hodyroff, @pmaier1
11+
* Date: 2020-12-09
612

7-
Technical Story: [Skip account-service by talking to CS3 user-api](https://github.com/owncloud/ocis/pull/1020) <!-- optional -->
13+
Technical Story: [Skip account-service by talking to CS3 user-api](https://github.com/owncloud/ocis/pull/1020)
814

915
## Context and Problem Statement
1016

1117
To attach metadata like shares to users ownCloud relies on persistent, non-reassignable, unique identifiers for users (and files). Email and username can change when a user changes his name. But even the OIDC sub+iss combination may change when the IdP changes. While there is [an account porting protocol](https://openid.net/specs/openid-connect-account-porting-1_0.html) that describes how a relying party (RP) such as ownCloud should behave, it still requires the RP to maintain its own user identifiers.
1218

13-
## Decision Drivers <!-- optional -->
19+
## Decision Drivers
1420

1521
* oCIS should be a single binary that can run out of the box without external dependencies like an LDAP server.
1622
* Time: we want to build a release candidate asap.
@@ -55,20 +61,20 @@ Chosen option: "Move accounts functionality to GLAuth and name it accounts", by
5561
- The current CS3 API for user management should be enriched with pagination, field mask and a query language as needed
5662
- properly register an [auxiliary LDAP schema that adds an ownCloudUUID attribute to users and groups](https://github.com/owncloud/ocis/blob/c8668e8cb171860c70fec29e5ae945bca44f1fb7/deployments/examples/cs3_users_ocis/config/ldap/ldif/10_owncloud_schema.ldif)
5763

58-
### Positive Consequences <!-- optional -->
64+
### Positive Consequences
5965

6066
* The accounts service (which is our drop in LDAP solution) can be dropped. The CS3 userprovider service becomes the only service dealing with users.
6167
* No sync
6268

63-
### Negative Consequences <!-- optional -->
69+
### Negative Consequences
6470

6571
* If users want to store users in their IDM and at the same time guests in a seperate user management we need to implement GLAuth backends that support more than one LDAP server.
6672

67-
## Pros and Cons of the Options <!-- optional -->
73+
## Pros and Cons of the Options
6874

6975
### GLAuth wraps accounts service
7076

71-
Currently, the accounts service is the source of truth and we use it to implement user management. <!-- optional -->
77+
Currently, the accounts service is the source of truth and we use it to implement user management.
7278

7379
* Good, because it solves the problem of storing and looking up an owncloud UUID for a user (and group)
7480
* Good, because we can manage users out of the box
@@ -77,7 +83,7 @@ Currently, the accounts service is the source of truth and we use it to implemen
7783

7884
### Move accounts functionality to GLAuth and name it accounts
7985

80-
We should use an existing LDAP server and make GLAuth a drop in replacement for it. <!-- optional -->
86+
We should use an existing LDAP server and make GLAuth a drop in replacement for it.
8187

8288
* Good, because we can use an existing user repository (an LDAP server), no need to sync or learn users.
8389
* Good, because admins can rely on existing user management tools.
@@ -102,3 +108,6 @@ We should use an existing LDAP server and make GLAuth a drop in replacement for
102108
* Good, because we can use the CS3 user provider with the existing LDAP / rest driver.
103109
* Bad, because oCIS admins may not have the rights to manage role assignments. (But this is handled at a different department.)
104110
* Bad, because oCIS admins may not have the rights to disable users if an external LDAP is used instead of the drop in GLAuth.
111+
112+
## Links
113+
* supersedes [ADR-0001]({{< ref "0001-introduce-accounts-service.md" >}})

docs/ocis/adr/_index.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
title: "Architecture Decisions"
3+
date: 2021-02-10T20:21:00+01:00
4+
weight: 15
5+
geekdocRepo: https://github.com/owncloud/ocis
6+
geekdocEditPath: edit/master/docs/ocis/adr
7+
geekdocFilePath: _index.md
8+
geekdocCollapseSection: true
9+
---
10+
11+
oCIS is documenting architecture decisions using [Markdown Architectural Decision Records](https://adr.github.io/madr/) (MADR), following [Documenting Architecture Decisions by Michael Nygard](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions).
12+
13+
{{< toc >}}
14+
15+
To manage the records we use [butonic/adr-tools](https://github.com/butonic/adr-tools), a fork of the original [npryce/adr-tools](https://github.com/npryce/adr-tools), based on [a pull request that should have added MADR support](https://github.com/npryce/adr-tools/pull/43). It also supports a YAML header that is used by our Hugo based doc generation

0 commit comments

Comments
 (0)