scimgateway 4.3.0 → 4.4.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/README.md CHANGED
@@ -16,8 +16,8 @@ Validated through IdP's:
16
16
 
17
17
  Latest news:
18
18
 
19
+ - **BREAKING**: [SCIM Stream](https://elshaug.xyz/docs/scim-stream) is the modern way of user provisioning letting clients subscribe to messages instead of traditional IGA top-down provisioning. SCIM Gateway now offers enhanced functionality with support for message subscription and automated provisioning using SCIM Stream
19
20
  - Authentication PassThrough letting plugin pass authentication directly to endpoint for avoid maintaining secrets at the gateway. Kubernetes health checks and shutdown handler support
20
- - **BREAKING**: [SCIM Stream](https://elshaug.xyz/docs/scim-stream) is the modern way of user provisioning letting clients subscribe to messages instead of traditional IGA top-down provisioning. SCIM Stream includes **SCIM Stream Gateway**, the next generation SCIM Gateway that supports message subscription and automated provisioning
21
21
  - Supports OAuth Client Credentials authentication
22
22
  - Major version v4.0.0. getUsers() and getGroups() replacing some deprecated methods. No limitations on filtering/sorting. Admin user access can be linked to specific baseEntities. New MongoDB plugin
23
23
  - ipAllowList for restricting access to allowlisted IP addresses or subnets e.g. Azure IP-range
@@ -185,9 +185,9 @@ When maintaining a set of modifications it useful to disable the postinstall ope
185
185
  const loki = require('./lib/plugin-loki')
186
186
  // const mongodb = require('./lib/plugin-mongodb')
187
187
  // const scim = require('./lib/plugin-scim')
188
- // const soap = require('./lib/plugin-soap')
188
+ // const soap = require('./lib/plugin-soap') // prereq: npm install soap
189
189
  // const mssql = require('./lib/plugin-mssql')
190
- // const saphana = require('./lib/plugin-saphana') // prereq: npm install hdb
190
+ // const saphana = require('./lib/plugin-saphana') // prereq: npm install hdb
191
191
  // const entra = require('./lib/plugin-entra-id')
192
192
  // const ldap = require('./lib/plugin-ldap')
193
193
  // const api = require('./lib/plugin-api')
@@ -295,7 +295,31 @@ Below shows an example of config\plugin-saphana.json
295
295
  "enabled": false,
296
296
  "shutdownTimeout": 15000,
297
297
  "forceExitTimeout": 1000
298
- }
298
+ },
299
+ "stream": {
300
+ "baseUrls": [],
301
+ "certificate": {
302
+ "ca": null
303
+ },
304
+ "subscriber": {
305
+ "enabled": false,
306
+ "entity": {
307
+ "undefined": {
308
+ "nats": {
309
+ "tenant": null,
310
+ "subject": null,
311
+ "jwt": null,
312
+ "secret": null
313
+ },
314
+ "deleteUserOnLastGroupRoleRemoval": false,
315
+ "convertRolesToGroups": false,
316
+ "generateUserPassword": false,
317
+ "modifyOnly": false,
318
+ "replaceDomains": []
319
+ }
320
+ }
321
+ }
322
+ }
299
323
  },
300
324
  "endpoint": {
301
325
  "host": "hostname",
@@ -420,6 +444,8 @@ Definitions in `endpoint` object are customized according to our plugin code. Pl
420
444
  - **kubernetes.shutdownTimeout** - Number of milliseconds to wait before shutting down (default 15000).
421
445
  - **kubernetes.forceExitTimeout** - Number of milliseconds before forceful exiting (default 1000).
422
446
 
447
+ - **stream** - See [SCIM Stream](https://elshaug.xyz/docs/scim-stream) for configuration details
448
+
423
449
  - **endpoint** - Contains endpoint specific configuration according to our **plugin code**.
424
450
 
425
451
  #### Configuration notes
@@ -1173,12 +1199,21 @@ MIT © [Jarle Elshaug](https://www.elshaug.xyz)
1173
1199
 
1174
1200
  ## Change log
1175
1201
 
1202
+ ### v4.4.0
1203
+
1204
+ [Added]
1205
+
1206
+ - SCIM Gateway now offers enhanced functionality with support for message subscription and automated provisioning using [SCIM Stream](https://elshaug.xyz/docs/scim-stream)
1207
+ - plugin-entra-id, plugin-scim and plugin-api having updated `REST endpoint helpers-template` to address and resolve endpoint throttling
1208
+
1209
+ Note, module soap is not default included anymore. SOAP based plugins e.g., plugin-soap therefore needs `npm install soap` for including module in your package
1210
+
1176
1211
  ### v4.3.0
1177
1212
 
1178
1213
  [Added]
1179
1214
 
1180
- - configuration **scimgateway.scim.port** can now be set to 0 or removed for deactivating listener
1181
- - configuration **scimgateway.scim.usePutSoftSync** set to `true` now includes additional logic that do not change existing user attributes not included in PUT body content
1215
+ - configuration `scimgateway.scim.port` can now be set to 0 or removed for deactivating listener
1216
+ - configuration `cimgateway.scim.usePutSoftSync` set to `true` now includes additional logic that do not change existing user attributes not included in PUT body content
1182
1217
  - createUser/createGroup no longer return id if id have not been returned by plugin or by getUser filtering on userName. Previously userName was returned as id when missing plugin logic.
1183
1218
  - plugin-ldap supporting simpel filtering
1184
1219
  - plugin-loki using baseEntity configuration for supporting multi loki endpoints
@@ -93,6 +93,30 @@
93
93
  "enabled": false,
94
94
  "shutdownTimeout": 15000,
95
95
  "forceExitTimeout": 1000
96
+ },
97
+ "stream": {
98
+ "baseUrls": [],
99
+ "certificate": {
100
+ "ca": null
101
+ },
102
+ "subscriber": {
103
+ "enabled": false,
104
+ "entity": {
105
+ "undefined": {
106
+ "nats": {
107
+ "tenant": null,
108
+ "subject": null,
109
+ "jwt": null,
110
+ "secret": null
111
+ },
112
+ "deleteUserOnLastGroupRoleRemoval": false,
113
+ "convertRolesToGroups": false,
114
+ "generateUserPassword": false,
115
+ "modifyOnly": false,
116
+ "replaceDomains": []
117
+ }
118
+ }
119
+ }
96
120
  }
97
121
  },
98
122
  "endpoint": {
@@ -101,8 +125,9 @@
101
125
  "baseUrls": [
102
126
  "http://fakerestapi.azurewebsites.net"
103
127
  ],
104
- "username": "endpointuser",
105
- "password": "password",
128
+ "oauth": null,
129
+ "bearerAuth": null,
130
+ "basicAuth": null,
106
131
  "proxy": {
107
132
  "host": null,
108
133
  "username": null,
@@ -111,4 +136,4 @@
111
136
  }
112
137
  }
113
138
  }
114
- }
139
+ }
@@ -4,7 +4,7 @@
4
4
  "localhostonly": false,
5
5
  "payloadSize": null,
6
6
  "scim": {
7
- "version": "1.1",
7
+ "version": "2.0",
8
8
  "customSchema": null,
9
9
  "skipTypeConvert": false,
10
10
  "usePutSoftSync": false
@@ -92,6 +92,30 @@
92
92
  "enabled": false,
93
93
  "shutdownTimeout": 15000,
94
94
  "forceExitTimeout": 1000
95
+ },
96
+ "stream": {
97
+ "baseUrls": [],
98
+ "certificate": {
99
+ "ca": null
100
+ },
101
+ "subscriber": {
102
+ "enabled": false,
103
+ "entity": {
104
+ "undefined": {
105
+ "nats": {
106
+ "tenant": null,
107
+ "subject": null,
108
+ "jwt": null,
109
+ "secret": null
110
+ },
111
+ "deleteUserOnLastGroupRoleRemoval": false,
112
+ "convertRolesToGroups": false,
113
+ "generateUserPassword": false,
114
+ "modifyOnly": false,
115
+ "replaceDomains": []
116
+ }
117
+ }
118
+ }
95
119
  }
96
120
  },
97
121
  "endpoint": {
@@ -104,6 +128,8 @@
104
128
  "clientId": "Application ID",
105
129
  "clientSecret": "Generated application secret value"
106
130
  },
131
+ "bearerAuth": null,
132
+ "basicAuth": null,
107
133
  "proxy": {
108
134
  "host": null,
109
135
  "username": null,
@@ -93,6 +93,30 @@
93
93
  "enabled": false,
94
94
  "shutdownTimeout": 15000,
95
95
  "forceExitTimeout": 1000
96
+ },
97
+ "stream": {
98
+ "baseUrls": [],
99
+ "certificate": {
100
+ "ca": null
101
+ },
102
+ "subscriber": {
103
+ "enabled": false,
104
+ "entity": {
105
+ "undefined": {
106
+ "nats": {
107
+ "tenant": null,
108
+ "subject": null,
109
+ "jwt": null,
110
+ "secret": null
111
+ },
112
+ "deleteUserOnLastGroupRoleRemoval": false,
113
+ "convertRolesToGroups": false,
114
+ "generateUserPassword": false,
115
+ "modifyOnly": false,
116
+ "replaceDomains": []
117
+ }
118
+ }
119
+ }
96
120
  }
97
121
  },
98
122
  "endpoint": {
@@ -93,6 +93,30 @@
93
93
  "enabled": false,
94
94
  "shutdownTimeout": 15000,
95
95
  "forceExitTimeout": 1000
96
+ },
97
+ "stream": {
98
+ "baseUrls": [],
99
+ "certificate": {
100
+ "ca": null
101
+ },
102
+ "subscriber": {
103
+ "enabled": false,
104
+ "entity": {
105
+ "undefined": {
106
+ "nats": {
107
+ "tenant": null,
108
+ "subject": null,
109
+ "jwt": null,
110
+ "secret": null
111
+ },
112
+ "deleteUserOnLastGroupRoleRemoval": false,
113
+ "convertRolesToGroups": false,
114
+ "generateUserPassword": false,
115
+ "modifyOnly": false,
116
+ "replaceDomains": []
117
+ }
118
+ }
119
+ }
96
120
  }
97
121
  },
98
122
  "endpoint": {
@@ -99,6 +99,30 @@
99
99
  "enabled": false,
100
100
  "shutdownTimeout": 15000,
101
101
  "forceExitTimeout": 1000
102
+ },
103
+ "stream": {
104
+ "baseUrls": [],
105
+ "certificate": {
106
+ "ca": null
107
+ },
108
+ "subscriber": {
109
+ "enabled": false,
110
+ "entity": {
111
+ "undefined": {
112
+ "nats": {
113
+ "tenant": null,
114
+ "subject": null,
115
+ "jwt": null,
116
+ "secret": null
117
+ },
118
+ "deleteUserOnLastGroupRoleRemoval": false,
119
+ "convertRolesToGroups": false,
120
+ "generateUserPassword": false,
121
+ "modifyOnly": false,
122
+ "replaceDomains": []
123
+ }
124
+ }
125
+ }
102
126
  }
103
127
  },
104
128
  "endpoint": {
@@ -93,6 +93,30 @@
93
93
  "enabled": false,
94
94
  "shutdownTimeout": 15000,
95
95
  "forceExitTimeout": 1000
96
+ },
97
+ "stream": {
98
+ "baseUrls": [],
99
+ "certificate": {
100
+ "ca": null
101
+ },
102
+ "subscriber": {
103
+ "enabled": false,
104
+ "entity": {
105
+ "undefined": {
106
+ "nats": {
107
+ "tenant": null,
108
+ "subject": null,
109
+ "jwt": null,
110
+ "secret": null
111
+ },
112
+ "deleteUserOnLastGroupRoleRemoval": false,
113
+ "convertRolesToGroups": false,
114
+ "generateUserPassword": false,
115
+ "modifyOnly": false,
116
+ "replaceDomains": []
117
+ }
118
+ }
119
+ }
96
120
  }
97
121
  },
98
122
  "endpoint": {
@@ -93,6 +93,30 @@
93
93
  "enabled": false,
94
94
  "shutdownTimeout": 15000,
95
95
  "forceExitTimeout": 1000
96
+ },
97
+ "stream": {
98
+ "baseUrls": [],
99
+ "certificate": {
100
+ "ca": null
101
+ },
102
+ "subscriber": {
103
+ "enabled": false,
104
+ "entity": {
105
+ "undefined": {
106
+ "nats": {
107
+ "tenant": null,
108
+ "subject": null,
109
+ "jwt": null,
110
+ "secret": null
111
+ },
112
+ "deleteUserOnLastGroupRoleRemoval": false,
113
+ "convertRolesToGroups": false,
114
+ "generateUserPassword": false,
115
+ "modifyOnly": false,
116
+ "replaceDomains": []
117
+ }
118
+ }
119
+ }
96
120
  }
97
121
  },
98
122
  "endpoint": {
@@ -93,6 +93,30 @@
93
93
  "enabled": false,
94
94
  "shutdownTimeout": 15000,
95
95
  "forceExitTimeout": 1000
96
+ },
97
+ "stream": {
98
+ "baseUrls": [],
99
+ "certificate": {
100
+ "ca": null
101
+ },
102
+ "subscriber": {
103
+ "enabled": false,
104
+ "entity": {
105
+ "undefined": {
106
+ "nats": {
107
+ "tenant": null,
108
+ "subject": null,
109
+ "jwt": null,
110
+ "secret": null
111
+ },
112
+ "deleteUserOnLastGroupRoleRemoval": false,
113
+ "convertRolesToGroups": false,
114
+ "generateUserPassword": false,
115
+ "modifyOnly": false,
116
+ "replaceDomains": []
117
+ }
118
+ }
119
+ }
96
120
  }
97
121
  },
98
122
  "endpoint": {
@@ -102,6 +126,8 @@
102
126
  "http://localhost:8880"
103
127
  ],
104
128
  "scimVersion": "2.0",
129
+ "oauth": null,
130
+ "bearerAuth": null,
105
131
  "basicAuth": {
106
132
  "username": "gwadmin",
107
133
  "password": "password"
@@ -117,6 +143,8 @@
117
143
  "http://localhost:8880"
118
144
  ],
119
145
  "scimVersion": "2.0",
146
+ "oauth": null,
147
+ "bearerAuth": null,
120
148
  "basicAuth": {
121
149
  "username": "gwadmin",
122
150
  "password": "password"
@@ -93,6 +93,30 @@
93
93
  "enabled": false,
94
94
  "shutdownTimeout": 15000,
95
95
  "forceExitTimeout": 1000
96
+ },
97
+ "stream": {
98
+ "baseUrls": [],
99
+ "certificate": {
100
+ "ca": null
101
+ },
102
+ "subscriber": {
103
+ "enabled": false,
104
+ "entity": {
105
+ "undefined": {
106
+ "nats": {
107
+ "tenant": null,
108
+ "subject": null,
109
+ "jwt": null,
110
+ "secret": null
111
+ },
112
+ "deleteUserOnLastGroupRoleRemoval": false,
113
+ "convertRolesToGroups": false,
114
+ "generateUserPassword": false,
115
+ "modifyOnly": false,
116
+ "replaceDomains": []
117
+ }
118
+ }
119
+ }
96
120
  }
97
121
  },
98
122
  "endpoint": {
package/index.js CHANGED
@@ -12,9 +12,9 @@
12
12
  const loki = require('./lib/plugin-loki')
13
13
  // const mongodb = require('./lib/plugin-mongodb')
14
14
  // const scim = require('./lib/plugin-scim')
15
- // const soap = require('./lib/plugin-soap')
15
+ // const soap = require('./lib/plugin-soap') // prereq: npm install soap
16
16
  // const mssql = require('./lib/plugin-mssql')
17
- // const saphana = require('./lib/plugin-saphana') // prereq: npm install hdb --save
17
+ // const saphana = require('./lib/plugin-saphana') // prereq: npm install hdb
18
18
  // const entra = require('./lib/plugin-entra-id')
19
19
  // const ldap = require('./lib/plugin-ldap')
20
20
  // const api = require('./lib/plugin-api')