ldap-rest 0.2.2 → 0.3.1

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.
Files changed (53) hide show
  1. package/README.md +1 -1
  2. package/dist/abstract/ldapFlat.js +1 -1
  3. package/dist/bin/index.js +1 -1
  4. package/dist/config/args.js +1 -1
  5. package/dist/lib/expressFormatedResponses.js +1 -1
  6. package/dist/plugins/auth/authzDynamic.js +1 -0
  7. package/dist/plugins/auth/authzDynamicHash.js +1 -0
  8. package/dist/plugins/ldap/organization.js +1 -1
  9. package/dist/plugins/ldap/organizations.js +1 -0
  10. package/dist/plugins/scim/baseResolver.js +1 -0
  11. package/dist/plugins/scim/bulk.js +1 -0
  12. package/dist/plugins/scim/discovery.js +1 -0
  13. package/dist/plugins/scim/errors.js +1 -0
  14. package/dist/plugins/scim/filter.js +1 -0
  15. package/dist/plugins/scim/groups.js +1 -0
  16. package/dist/plugins/scim/mapping.js +1 -0
  17. package/dist/plugins/scim/patch.js +1 -0
  18. package/dist/plugins/scim/scim.js +1 -0
  19. package/dist/plugins/scim/types.js +1 -0
  20. package/dist/plugins/scim/users.js +1 -0
  21. package/dist/src/abstract/ldapFlat.d.ts +127 -0
  22. package/dist/src/config/args.d.ts +24 -0
  23. package/dist/src/plugins/auth/authzDynamic.d.ts +117 -0
  24. package/dist/src/plugins/auth/authzDynamicHash.d.ts +27 -0
  25. package/dist/src/plugins/configApi.d.ts +51 -0
  26. package/dist/src/plugins/demo/helloworld.d.ts +21 -0
  27. package/dist/src/plugins/ldap/bulkImport.d.ts +65 -0
  28. package/dist/src/plugins/ldap/groups.d.ts +68 -0
  29. package/dist/src/plugins/ldap/organization.d.ts +8 -65
  30. package/dist/src/plugins/ldap/organizations.d.ts +155 -0
  31. package/dist/src/plugins/ldap/passwordPolicy.d.ts +178 -0
  32. package/dist/src/plugins/scim/baseResolver.d.ts +23 -0
  33. package/dist/src/plugins/scim/bulk.d.ts +43 -0
  34. package/dist/src/plugins/scim/discovery.d.ts +27 -0
  35. package/dist/src/plugins/scim/errors.d.ts +37 -0
  36. package/dist/src/plugins/scim/filter.d.ts +13 -0
  37. package/dist/src/plugins/scim/groups.d.ts +61 -0
  38. package/dist/src/plugins/scim/mapping.d.ts +52 -0
  39. package/dist/src/plugins/scim/patch.d.ts +39 -0
  40. package/dist/src/plugins/scim/scim.d.ts +412 -0
  41. package/dist/src/plugins/scim/types.d.ts +222 -0
  42. package/dist/src/plugins/scim/users.d.ts +58 -0
  43. package/dist/src/plugins/static.d.ts +33 -0
  44. package/dist/src/plugins/twake/appAccountsApi.d.ts +63 -0
  45. package/dist/src/plugins/twake/james.d.ts +47 -0
  46. package/docs/plugin-development/README.md +2 -1
  47. package/docs/plugin-development/openapi.md +144 -0
  48. package/docs/usage/plugins/auth/authz-dynamic.md +183 -0
  49. package/docs/usage/plugins/integrations/scim.md +567 -0
  50. package/package.json +72 -1
  51. package/static/schemas/scim/Group.json +31 -0
  52. package/static/schemas/scim/User.json +147 -0
  53. package/static/schemas/scim/default-mapping.json +48 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ldap-rest",
3
- "version": "0.2.2",
3
+ "version": "0.3.1",
4
4
  "description": "Light directory manager",
5
5
  "keywords": [
6
6
  "Identity-Manager"
@@ -36,6 +36,14 @@
36
36
  "types": "./dist/src/lib/ldapActions.d.ts",
37
37
  "import": "./dist/lib/ldapActions.js"
38
38
  },
39
+ "./plugin-auth-authzdynamic": {
40
+ "types": "./dist/src/plugins/auth/authzDynamic.d.ts",
41
+ "import": "./dist/plugins/auth/authzDynamic.js"
42
+ },
43
+ "./plugin-auth-authzdynamichash": {
44
+ "types": "./dist/src/plugins/auth/authzDynamicHash.d.ts",
45
+ "import": "./dist/plugins/auth/authzDynamicHash.js"
46
+ },
39
47
  "./plugin-auth-authzlinid1": {
40
48
  "types": "./dist/src/plugins/auth/authzLinid1.d.ts",
41
49
  "import": "./dist/plugins/auth/authzLinid1.js"
@@ -112,6 +120,10 @@
112
120
  "types": "./dist/src/plugins/ldap/organization.d.ts",
113
121
  "import": "./dist/plugins/ldap/organization.js"
114
122
  },
123
+ "./plugin-ldap-organizations": {
124
+ "types": "./dist/src/plugins/ldap/organizations.d.ts",
125
+ "import": "./dist/plugins/ldap/organizations.js"
126
+ },
115
127
  "./plugin-ldap-passwordpolicy": {
116
128
  "types": "./dist/src/plugins/ldap/passwordPolicy.d.ts",
117
129
  "import": "./dist/plugins/ldap/passwordPolicy.js"
@@ -120,6 +132,50 @@
120
132
  "types": "./dist/src/plugins/ldap/trash.d.ts",
121
133
  "import": "./dist/plugins/ldap/trash.js"
122
134
  },
135
+ "./plugin-scim-baseresolver": {
136
+ "types": "./dist/src/plugins/scim/baseResolver.d.ts",
137
+ "import": "./dist/plugins/scim/baseResolver.js"
138
+ },
139
+ "./plugin-scim-bulk": {
140
+ "types": "./dist/src/plugins/scim/bulk.d.ts",
141
+ "import": "./dist/plugins/scim/bulk.js"
142
+ },
143
+ "./plugin-scim-discovery": {
144
+ "types": "./dist/src/plugins/scim/discovery.d.ts",
145
+ "import": "./dist/plugins/scim/discovery.js"
146
+ },
147
+ "./plugin-scim-errors": {
148
+ "types": "./dist/src/plugins/scim/errors.d.ts",
149
+ "import": "./dist/plugins/scim/errors.js"
150
+ },
151
+ "./plugin-scim-filter": {
152
+ "types": "./dist/src/plugins/scim/filter.d.ts",
153
+ "import": "./dist/plugins/scim/filter.js"
154
+ },
155
+ "./plugin-scim-groups": {
156
+ "types": "./dist/src/plugins/scim/groups.d.ts",
157
+ "import": "./dist/plugins/scim/groups.js"
158
+ },
159
+ "./plugin-scim-mapping": {
160
+ "types": "./dist/src/plugins/scim/mapping.d.ts",
161
+ "import": "./dist/plugins/scim/mapping.js"
162
+ },
163
+ "./plugin-scim-patch": {
164
+ "types": "./dist/src/plugins/scim/patch.d.ts",
165
+ "import": "./dist/plugins/scim/patch.js"
166
+ },
167
+ "./plugin-scim-scim": {
168
+ "types": "./dist/src/plugins/scim/scim.d.ts",
169
+ "import": "./dist/plugins/scim/scim.js"
170
+ },
171
+ "./plugin-scim-types": {
172
+ "types": "./dist/src/plugins/scim/types.d.ts",
173
+ "import": "./dist/plugins/scim/types.js"
174
+ },
175
+ "./plugin-scim-users": {
176
+ "types": "./dist/src/plugins/scim/users.d.ts",
177
+ "import": "./dist/plugins/scim/users.js"
178
+ },
123
179
  "./plugin-static": {
124
180
  "types": "./dist/src/plugins/static.d.ts",
125
181
  "import": "./dist/plugins/static.js"
@@ -376,6 +432,18 @@
376
432
  "import": "./static/schemas/obm/users.json",
377
433
  "require": "./static/schemas/obm/users.json"
378
434
  },
435
+ "./schema-scim-group": {
436
+ "import": "./static/schemas/scim/Group.json",
437
+ "require": "./static/schemas/scim/Group.json"
438
+ },
439
+ "./schema-scim-user": {
440
+ "import": "./static/schemas/scim/User.json",
441
+ "require": "./static/schemas/scim/User.json"
442
+ },
443
+ "./schema-scim-default-mapping": {
444
+ "import": "./static/schemas/scim/default-mapping.json",
445
+ "require": "./static/schemas/scim/default-mapping.json"
446
+ },
379
447
  "./schema-standard-automountmaps": {
380
448
  "import": "./static/schemas/standard/automountMaps.json",
381
449
  "require": "./static/schemas/standard/automountMaps.json"
@@ -488,6 +556,7 @@
488
556
  "build:dev": "./.dev.mk builddev",
489
557
  "build:docker": "./.dev.mk builddocker",
490
558
  "build:dockerfile": "./.dev.mk Dockerfile",
559
+ "build:pages": "tsx scripts/build-pages.ts",
491
560
  "build:prod": "npm run clean && NODE_ENV=production rollup -c && npm run build:browser && node scripts/moveBrowserLibs.mjs && npm run build:dockerfile",
492
561
  "build:watch": "rollup -c --watch",
493
562
  "check": "npm run check:ts && npm run lint && npm run format:check",
@@ -534,6 +603,7 @@
534
603
  "@rollup/plugin-typescript": "^12.1.4",
535
604
  "@types/chai": "^5.2.2",
536
605
  "@types/express": "^5.0.3",
606
+ "@types/js-yaml": "^4.0.9",
537
607
  "@types/mocha": "^10.0.10",
538
608
  "@types/multer": "^2.0.0",
539
609
  "@types/node": "^24.5.1",
@@ -547,6 +617,7 @@
547
617
  "eslint-plugin-node": "^11.1.0",
548
618
  "eslint-plugin-prettier": "^5.5.4",
549
619
  "fast-glob": "^3.3.3",
620
+ "js-yaml": "^4.1.1",
550
621
  "mocha": "^11.7.2",
551
622
  "nock": "^14.0.10",
552
623
  "prettier": "^3.6.2",
@@ -0,0 +1,31 @@
1
+ {
2
+ "id": "urn:ietf:params:scim:schemas:core:2.0:Group",
3
+ "name": "Group",
4
+ "description": "Group (RFC 7643)",
5
+ "attributes": [
6
+ {
7
+ "name": "displayName",
8
+ "type": "string",
9
+ "multiValued": false,
10
+ "required": true,
11
+ "caseExact": false,
12
+ "mutability": "readWrite",
13
+ "returned": "default",
14
+ "uniqueness": "server"
15
+ },
16
+ {
17
+ "name": "members",
18
+ "type": "complex",
19
+ "multiValued": true,
20
+ "required": false,
21
+ "mutability": "readWrite",
22
+ "returned": "default",
23
+ "subAttributes": [
24
+ { "name": "value", "type": "string" },
25
+ { "name": "$ref", "type": "reference" },
26
+ { "name": "display", "type": "string" },
27
+ { "name": "type", "type": "string" }
28
+ ]
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,147 @@
1
+ {
2
+ "id": "urn:ietf:params:scim:schemas:core:2.0:User",
3
+ "name": "User",
4
+ "description": "User Account (RFC 7643)",
5
+ "attributes": [
6
+ {
7
+ "name": "userName",
8
+ "type": "string",
9
+ "multiValued": false,
10
+ "required": true,
11
+ "caseExact": false,
12
+ "mutability": "readWrite",
13
+ "returned": "default",
14
+ "uniqueness": "server"
15
+ },
16
+ {
17
+ "name": "name",
18
+ "type": "complex",
19
+ "multiValued": false,
20
+ "required": false,
21
+ "mutability": "readWrite",
22
+ "returned": "default",
23
+ "subAttributes": [
24
+ { "name": "formatted", "type": "string" },
25
+ { "name": "familyName", "type": "string" },
26
+ { "name": "givenName", "type": "string" },
27
+ { "name": "middleName", "type": "string" },
28
+ { "name": "honorificPrefix", "type": "string" },
29
+ { "name": "honorificSuffix", "type": "string" }
30
+ ]
31
+ },
32
+ {
33
+ "name": "displayName",
34
+ "type": "string",
35
+ "multiValued": false,
36
+ "required": false,
37
+ "mutability": "readWrite",
38
+ "returned": "default"
39
+ },
40
+ {
41
+ "name": "nickName",
42
+ "type": "string",
43
+ "multiValued": false,
44
+ "required": false,
45
+ "mutability": "readWrite",
46
+ "returned": "default"
47
+ },
48
+ {
49
+ "name": "title",
50
+ "type": "string",
51
+ "multiValued": false,
52
+ "required": false,
53
+ "mutability": "readWrite",
54
+ "returned": "default"
55
+ },
56
+ {
57
+ "name": "userType",
58
+ "type": "string",
59
+ "multiValued": false,
60
+ "required": false,
61
+ "mutability": "readWrite",
62
+ "returned": "default"
63
+ },
64
+ {
65
+ "name": "preferredLanguage",
66
+ "type": "string",
67
+ "multiValued": false,
68
+ "required": false,
69
+ "mutability": "readWrite",
70
+ "returned": "default"
71
+ },
72
+ {
73
+ "name": "locale",
74
+ "type": "string",
75
+ "multiValued": false,
76
+ "required": false,
77
+ "mutability": "readWrite",
78
+ "returned": "default"
79
+ },
80
+ {
81
+ "name": "timezone",
82
+ "type": "string",
83
+ "multiValued": false,
84
+ "required": false,
85
+ "mutability": "readWrite",
86
+ "returned": "default"
87
+ },
88
+ {
89
+ "name": "active",
90
+ "type": "boolean",
91
+ "multiValued": false,
92
+ "required": false,
93
+ "mutability": "readWrite",
94
+ "returned": "default"
95
+ },
96
+ {
97
+ "name": "password",
98
+ "type": "string",
99
+ "multiValued": false,
100
+ "required": false,
101
+ "mutability": "writeOnly",
102
+ "returned": "never"
103
+ },
104
+ {
105
+ "name": "emails",
106
+ "type": "complex",
107
+ "multiValued": true,
108
+ "required": false,
109
+ "mutability": "readWrite",
110
+ "returned": "default",
111
+ "subAttributes": [
112
+ { "name": "value", "type": "string" },
113
+ { "name": "display", "type": "string" },
114
+ { "name": "type", "type": "string" },
115
+ { "name": "primary", "type": "boolean" }
116
+ ]
117
+ },
118
+ {
119
+ "name": "phoneNumbers",
120
+ "type": "complex",
121
+ "multiValued": true,
122
+ "required": false,
123
+ "mutability": "readWrite",
124
+ "returned": "default",
125
+ "subAttributes": [
126
+ { "name": "value", "type": "string" },
127
+ { "name": "display", "type": "string" },
128
+ { "name": "type", "type": "string" },
129
+ { "name": "primary", "type": "boolean" }
130
+ ]
131
+ },
132
+ {
133
+ "name": "groups",
134
+ "type": "complex",
135
+ "multiValued": true,
136
+ "required": false,
137
+ "mutability": "readOnly",
138
+ "returned": "default",
139
+ "subAttributes": [
140
+ { "name": "value", "type": "string" },
141
+ { "name": "$ref", "type": "reference" },
142
+ { "name": "display", "type": "string" },
143
+ { "name": "type", "type": "string" }
144
+ ]
145
+ }
146
+ ]
147
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "_comment": "Default LDAP <-> SCIM mapping for inetOrgPerson (User) and groupOfNames (Group). Override individual entries via --scim-user-mapping / --scim-group-mapping with a file using this shape.",
3
+ "user": {
4
+ "resourceType": "User",
5
+ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
6
+ "entries": [
7
+ { "scim": "userName", "ldap": "uid" },
8
+ { "scim": "externalId", "ldap": "employeeNumber" },
9
+ {
10
+ "scim": "name",
11
+ "sub": {
12
+ "familyName": "sn",
13
+ "givenName": "givenName",
14
+ "formatted": "cn",
15
+ "middleName": "initials"
16
+ }
17
+ },
18
+ { "scim": "displayName", "ldap": "displayName" },
19
+ { "scim": "title", "ldap": "title" },
20
+ { "scim": "preferredLanguage", "ldap": "preferredLanguage" },
21
+ {
22
+ "scim": "emails",
23
+ "ldapPrimary": "mail",
24
+ "ldapSecondary": "mailAlternateAddress",
25
+ "multi": "array"
26
+ },
27
+ {
28
+ "scim": "phoneNumbers",
29
+ "ldapPrimary": "telephoneNumber",
30
+ "ldapSecondary": "mobile",
31
+ "multi": "array"
32
+ }
33
+ ]
34
+ },
35
+ "group": {
36
+ "resourceType": "Group",
37
+ "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"],
38
+ "entries": [
39
+ { "scim": "displayName", "ldap": "cn" },
40
+ {
41
+ "scim": "externalId",
42
+ "ldap": "entryUUID",
43
+ "operational": true,
44
+ "readOnly": true
45
+ }
46
+ ]
47
+ }
48
+ }