ldap-rest 0.11.2 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abstract/ldapFlat.js +1 -1
- package/dist/bin/index.js +1 -1
- package/dist/config/args.js +1 -1
- package/dist/lib/authz/composition.js +1 -1
- package/dist/lib/errors.js +1 -1
- package/dist/lib/instanceProviders.js +1 -0
- package/dist/lib/ldapActions.js +1 -1
- package/dist/plugins/auth/openidconnect.js +1 -1
- package/dist/plugins/configApi.js +1 -1
- package/dist/plugins/ldap/groups.js +1 -1
- package/dist/plugins/ldap/trash.js +1 -1
- package/dist/plugins/scim/filter.js +1 -1
- package/dist/plugins/scim/groups.js +1 -1
- package/dist/plugins/scim/mapping.js +1 -1
- package/dist/plugins/scim/patch.js +1 -1
- package/dist/plugins/scim/users.js +1 -1
- package/dist/plugins/twake/groups.js +1 -0
- package/dist/plugins/twake/instances.js +1 -0
- package/dist/plugins/twake/lifecycleAttributes.js +1 -0
- package/dist/plugins/twake/lifecycleEvents.js +1 -0
- package/dist/plugins/twake/tombstone.js +1 -0
- package/dist/src/abstract/ldapFlat.d.ts +34 -6
- package/dist/src/abstract/plugin.d.ts +7 -4
- package/dist/src/config/args.d.ts +60 -0
- package/dist/src/hooks.d.ts +2 -0
- package/dist/src/lib/authz/composition.d.ts +1 -1
- package/dist/src/lib/errors.d.ts +3 -0
- package/dist/src/lib/instanceProviders.d.ts +88 -0
- package/dist/src/lib/ldapActions.d.ts +10 -2
- package/dist/src/plugins/auth/openidconnect.d.ts +39 -0
- package/dist/src/plugins/ldap/groups.d.ts +5 -0
- package/dist/src/plugins/scim/filter.d.ts +2 -1
- package/dist/src/plugins/scim/groups.d.ts +1 -0
- package/dist/src/plugins/scim/mapping.d.ts +22 -8
- package/dist/src/plugins/scim/patch.d.ts +9 -2
- package/dist/src/plugins/twake/groups.d.ts +89 -0
- package/dist/src/plugins/twake/instances.d.ts +102 -0
- package/dist/src/plugins/twake/lifecycleAttributes.d.ts +29 -0
- package/dist/src/plugins/twake/lifecycleEvents.d.ts +62 -0
- package/dist/src/plugins/twake/tombstone.d.ts +86 -0
- package/docs/client-development/api/rest-api.md +34 -2
- package/docs/plugin-development/hooks.md +24 -0
- package/docs/usage/configuration.md +97 -1
- package/docs/usage/plugins/README.md +10 -6
- package/docs/usage/plugins/auth/oidc.md +46 -0
- package/docs/usage/plugins/integrations/README.md +12 -4
- package/docs/usage/plugins/integrations/groups.md +225 -0
- package/docs/usage/plugins/integrations/instances.md +150 -0
- package/docs/usage/plugins/integrations/lifecycle-events.md +233 -0
- package/docs/usage/plugins/integrations/scim.md +55 -34
- package/docs/usage/plugins/integrations/tombstone.md +107 -0
- package/docs/usage/plugins/ldap/flat-generic.md +38 -2
- package/docs/usage/plugins/ldap/trash.md +4 -4
- package/docs/usage/upgrading.md +114 -0
- package/package.json +25 -1
- package/static/schemas/twake/organizationGroups.json +32 -0
package/docs/usage/upgrading.md
CHANGED
|
@@ -4,6 +4,120 @@ What to check before deploying, newest first. Only releases that need a
|
|
|
4
4
|
decision or a configuration change appear here; see the
|
|
5
5
|
[CHANGELOG](../../CHANGELOG.md) for everything else.
|
|
6
6
|
|
|
7
|
+
## To 0.13.0
|
|
8
|
+
|
|
9
|
+
### An OpenID Connect session ends with its access token
|
|
10
|
+
|
|
11
|
+
**Who is affected:** a deployment loading `core/auth/openidconnect`.
|
|
12
|
+
|
|
13
|
+
A session used to last as long as its cookie, a day of inactivity and a week
|
|
14
|
+
at most. It now ends when its access token expires, unless the provider gave
|
|
15
|
+
a refresh token to renew it: a browser then goes back through the provider,
|
|
16
|
+
silently while the provider's own session lasts, and a client asking for
|
|
17
|
+
JSON only (`Accept: application/json`) is answered `401`.
|
|
18
|
+
|
|
19
|
+
To keep sessions going without that round trip, have the provider issue
|
|
20
|
+
refresh tokens to the client
|
|
21
|
+
([details](plugins/auth/oidc.md#session-lifetime)).
|
|
22
|
+
|
|
23
|
+
### SCIM `active` reads the lock value
|
|
24
|
+
|
|
25
|
+
**Who is affected:** a SCIM client of a directory with ppolicy lockouts. An
|
|
26
|
+
account locked out after failed binds now reads `active: true`, is left out
|
|
27
|
+
of `active eq false`, and keeps its lockout on `"active": true`; only the
|
|
28
|
+
configured lock value reads as inactive. See
|
|
29
|
+
[the SCIM plugin documentation](plugins/integrations/scim.md#deactivating-an-account-active).
|
|
30
|
+
|
|
31
|
+
### twake/instances links an organization before its members
|
|
32
|
+
|
|
33
|
+
**Who is affected:** a deployment running 0.12.0 with
|
|
34
|
+
`--twake-instance-provider cloudery` and `--twake-instance-organization-base`.
|
|
35
|
+
|
|
36
|
+
0.12.0 sent each member's `user.created` at once and marked the member, while
|
|
37
|
+
the Cloudery refused it because the organization was not linked to its
|
|
38
|
+
instance. The plugin now links the organization and holds its members until
|
|
39
|
+
then, but only releases members that are not marked, so those already marked
|
|
40
|
+
are not sent again on their own.
|
|
41
|
+
|
|
42
|
+
To repair an organization, clear `--twake-instance-sent-attribute` on its
|
|
43
|
+
marked members, then replay its `workplace.created` or call
|
|
44
|
+
`ensureOrganization` for it ([details](plugins/integrations/instances.md#organizations)).
|
|
45
|
+
|
|
46
|
+
### Trash watched bases are separated by `;`
|
|
47
|
+
|
|
48
|
+
**Who is affected:** a deployment loading `core/ldap/trash` with
|
|
49
|
+
`--trash-watched-bases` set.
|
|
50
|
+
|
|
51
|
+
The list was split on commas, so a DN such as `ou=users,dc=example,dc=com`
|
|
52
|
+
became the suffixes `ou=users`, `dc=example` and `dc=com`, and the trash
|
|
53
|
+
caught deletes in every branch under `dc=com`. Each base is now a whole DN,
|
|
54
|
+
and bases are separated by `;`:
|
|
55
|
+
`ou=users,dc=example,dc=com;ou=groups,dc=example,dc=com`. A single DN needs
|
|
56
|
+
no change. A list of full DNs joined by commas, such as
|
|
57
|
+
`ou=users,dc=example,dc=com,ou=groups,dc=example,dc=com`, or a list of RDNs,
|
|
58
|
+
such as `ou=users,ou=groups`, now reads as one DN that no entry sits under,
|
|
59
|
+
so the trash catches nothing and deletes there are permanent: rewrite it with
|
|
60
|
+
`;`, each branch as its full DN. The server logs a warning at startup for a
|
|
61
|
+
watched base that is not one DN under `--ldap-base`.
|
|
62
|
+
|
|
63
|
+
## To 0.12.0
|
|
64
|
+
|
|
65
|
+
### twake/instances replaces cozyProvision and clouderyProvision
|
|
66
|
+
|
|
67
|
+
**Who is affected:** a deployment loading `core/twake/cozyProvision` or
|
|
68
|
+
`core/twake/clouderyProvision`.
|
|
69
|
+
|
|
70
|
+
Replace the plugin with `core/twake/instances`
|
|
71
|
+
([doc](plugins/integrations/instances.md)); the server refuses to start with
|
|
72
|
+
both. Its options are its own. From cozyProvision, with
|
|
73
|
+
`--twake-instance-provider cozy-stack` and `--twake-instance-dn` set to the
|
|
74
|
+
accounts' branch:
|
|
75
|
+
|
|
76
|
+
- `--cozy-admin-url` → `--twake-instance-cozy-url`
|
|
77
|
+
- `--cozy-admin-user` → `--twake-instance-cozy-user`
|
|
78
|
+
- `--cozy-admin-passphrase` → `--twake-instance-cozy-passphrase`
|
|
79
|
+
- `--cozy-org-domain` → `--twake-instance-cozy-domain` (the instances'
|
|
80
|
+
domain) and `--twake-instance-cozy-org-domain`
|
|
81
|
+
- `--cozy-org-id` → `--twake-instance-cozy-org-id`
|
|
82
|
+
- `--cozy-context-name` → `--twake-instance-cozy-context`
|
|
83
|
+
- `--cozy-apps` → `--twake-instance-cozy-apps`
|
|
84
|
+
- `--cozy-default-locale` → `--twake-instance-locale`
|
|
85
|
+
- `--cozy-auth-exchange` → `--twake-instance-auth-exchange`
|
|
86
|
+
- `--cozy-b2b-exchange` → `--twake-instance-b2b-exchange`
|
|
87
|
+
- `--cozy-user-created-routing-key` → `--twake-instance-user-created-key`
|
|
88
|
+
|
|
89
|
+
From clouderyProvision, with `--twake-instance-provider cloudery`:
|
|
90
|
+
|
|
91
|
+
- `--cloudery-manager-url` → `--twake-instance-cloudery-url`
|
|
92
|
+
- `--cloudery-manager-token` → `--twake-instance-cloudery-token`
|
|
93
|
+
- `--cloudery-offer` → `--twake-instance-cloudery-offer`
|
|
94
|
+
- `--cloudery-domain` → `--twake-instance-cloudery-domain`
|
|
95
|
+
- `--cloudery-default-locale` → `--twake-instance-locale`
|
|
96
|
+
- `--cloudery-fqdn-attribute` → `--twake-instance-fqdn-attribute`
|
|
97
|
+
- `--cloudery-user-branch` → `--twake-instance-dn`, with an `org` group for
|
|
98
|
+
the organization id; `--twake-instance-id '{uid}{org}'` keeps the slugs
|
|
99
|
+
|
|
100
|
+
What no longer happens:
|
|
101
|
+
|
|
102
|
+
- An account gets its instance on any add under `--twake-instance-dn`, not
|
|
103
|
+
only a SCIM create.
|
|
104
|
+
- `domain.user.deleted` is not published, and `--cozy-user-deleted-routing-key`
|
|
105
|
+
has no plugin to read it. With the Cloudery, deleting an account no longer
|
|
106
|
+
deletes its instance; cozy-stack instances still are.
|
|
107
|
+
- clouderyProvision's writes on a SCIM create are gone:
|
|
108
|
+
`twakeOrganizationId`, `twakeOrganizationRole`, `twakeInvited`,
|
|
109
|
+
`twakePhones`, `cn` set to the userName, and the lower-casing of the SCIM
|
|
110
|
+
`userName`. The `x-cloudery-org-*` headers are not read; the organization
|
|
111
|
+
comes from the DN. `--cloudery-org-*`, `--cloudery-phones-attribute`,
|
|
112
|
+
`--cloudery-invited-attribute` and the workflow polling options are gone:
|
|
113
|
+
the address arrives with `workplace.created` instead.
|
|
114
|
+
- With cozy-stack, the instance address drops the uid's dots and lower-cases
|
|
115
|
+
it, as the Cloudery's slugs do: an account whose uid holds a dot or a
|
|
116
|
+
capital gets a different address than cozyProvision gave it. Its OIDC id
|
|
117
|
+
is still the uid.
|
|
118
|
+
|
|
119
|
+
`user.created` keeps its fields, `twakeId` still being the account's uid.
|
|
120
|
+
|
|
7
121
|
## To 0.11.0
|
|
8
122
|
|
|
9
123
|
### Group reads are judged
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ldap-rest",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Light directory manager",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Identity-Manager"
|
|
@@ -268,10 +268,30 @@
|
|
|
268
268
|
"types": "./dist/src/plugins/twake/drive.d.ts",
|
|
269
269
|
"import": "./dist/plugins/twake/drive.js"
|
|
270
270
|
},
|
|
271
|
+
"./plugin-twake-groups": {
|
|
272
|
+
"types": "./dist/src/plugins/twake/groups.d.ts",
|
|
273
|
+
"import": "./dist/plugins/twake/groups.js"
|
|
274
|
+
},
|
|
275
|
+
"./plugin-twake-instances": {
|
|
276
|
+
"types": "./dist/src/plugins/twake/instances.d.ts",
|
|
277
|
+
"import": "./dist/plugins/twake/instances.js"
|
|
278
|
+
},
|
|
271
279
|
"./plugin-twake-james": {
|
|
272
280
|
"types": "./dist/src/plugins/twake/james.d.ts",
|
|
273
281
|
"import": "./dist/plugins/twake/james.js"
|
|
274
282
|
},
|
|
283
|
+
"./plugin-twake-lifecycleattributes": {
|
|
284
|
+
"types": "./dist/src/plugins/twake/lifecycleAttributes.d.ts",
|
|
285
|
+
"import": "./dist/plugins/twake/lifecycleAttributes.js"
|
|
286
|
+
},
|
|
287
|
+
"./plugin-twake-lifecycleevents": {
|
|
288
|
+
"types": "./dist/src/plugins/twake/lifecycleEvents.d.ts",
|
|
289
|
+
"import": "./dist/plugins/twake/lifecycleEvents.js"
|
|
290
|
+
},
|
|
291
|
+
"./plugin-twake-tombstone": {
|
|
292
|
+
"types": "./dist/src/plugins/twake/tombstone.d.ts",
|
|
293
|
+
"import": "./dist/plugins/twake/tombstone.js"
|
|
294
|
+
},
|
|
275
295
|
"./plugin-weblogs": {
|
|
276
296
|
"types": "./dist/src/plugins/weblogs.d.ts",
|
|
277
297
|
"import": "./dist/plugins/weblogs.js"
|
|
@@ -644,6 +664,10 @@
|
|
|
644
664
|
"import": "./static/schemas/twake/nomenclature/twakeTitle.json",
|
|
645
665
|
"require": "./static/schemas/twake/nomenclature/twakeTitle.json"
|
|
646
666
|
},
|
|
667
|
+
"./schema-twake-organizationgroups": {
|
|
668
|
+
"import": "./static/schemas/twake/organizationGroups.json",
|
|
669
|
+
"require": "./static/schemas/twake/organizationGroups.json"
|
|
670
|
+
},
|
|
647
671
|
"./schema-twake-organizations": {
|
|
648
672
|
"import": "./static/schemas/twake/organizations.json",
|
|
649
673
|
"require": "./static/schemas/twake/organizations.json"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"strict": true,
|
|
3
|
+
"attributes": {
|
|
4
|
+
"objectClass": {
|
|
5
|
+
"type": "array",
|
|
6
|
+
"items": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"test": "^[a-zA-Z][a-zA-Z0-9-]*$"
|
|
9
|
+
},
|
|
10
|
+
"default": ["top", "groupOfNames", "twakeGroup"],
|
|
11
|
+
"required": true,
|
|
12
|
+
"fixed": true
|
|
13
|
+
},
|
|
14
|
+
"cn": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"test": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
|
|
17
|
+
"required": true
|
|
18
|
+
},
|
|
19
|
+
"member": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"items": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"test": "^[a-zA-Z]+=.*,__LDAP_BASE__$"
|
|
24
|
+
},
|
|
25
|
+
"required": false
|
|
26
|
+
},
|
|
27
|
+
"description": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": false
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|