scimgateway 4.1.4 → 4.1.6

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
@@ -1,6 +1,6 @@
1
1
  # SCIM Gateway
2
2
 
3
- [![Build Status](https://app.travis-ci.com/jelhub/scimgateway.svg?branch=master)](https://app.travis-ci.com/github/jelhub/scimgateway) [![npm Version](https://img.shields.io/npm/v/scimgateway.svg?style=flat-square&label=latest)](https://www.npmjs.com/package/scimgateway)[![npm Downloads](https://img.shields.io/npm/dt/scimgateway.svg?style=flat-square)](https://www.npmjs.com/package/scimgateway) [![chat disqus](https://jelhub.github.io/images/chat.svg)](https://elshaug.xyz/docs/scimgateway#disqus_thread) [![GitHub forks](https://img.shields.io/github/forks/jelhub/scimgateway.svg?style=social&label=Fork)](https://github.com/jelhub/scimgateway)
3
+ [![Build Status](https://app.travis-ci.com/jelhub/scimgateway.svg?branch=master)](https://app.travis-ci.com/github/jelhub/scimgateway) [![npm Version](https://img.shields.io/npm/v/scimgateway.svg?style=flat-square&label=latest)](https://www.npmjs.com/package/scimgateway)[![npm Downloads](https://img.shields.io/npm/dm/scimgateway.svg?style=flat-square)](https://www.npmjs.com/package/scimgateway) [![chat disqus](https://jelhub.github.io/images/chat.svg)](https://elshaug.xyz/docs/scimgateway#disqus_thread) [![GitHub forks](https://img.shields.io/github/forks/jelhub/scimgateway.svg?style=social&label=Fork)](https://github.com/jelhub/scimgateway)
4
4
 
5
5
  ---
6
6
  Author: Jarle Elshaug
@@ -16,8 +16,9 @@ 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 Stream includes **SCIM Stream Gateway**, the next generation SCIM Gateway that supports message subscription and automated provisioning
19
20
  - Supporting OAuth Client Credentials authentication
20
- - Major version v4.0.0. getUsers() and getGroups() replacing some deprecated methods. No limitations on filtering/sorting. Admin user access can be limited to specific baseEntities. New MongoDB plugin
21
+ - 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
21
22
  - ipAllowList for restricting access to allowlisted IP addresses or subnets e.g. Azure AD IP-range
22
23
  - General LDAP plugin configured for Active Directory
23
24
  - [PlugSSO](https://elshaug.xyz/docs/plugsso) using SCIM Gateway
@@ -39,7 +40,7 @@ Using Identity Manager, we could setup one or more endpoints of type SCIM pointi
39
40
 
40
41
  ![](https://jelhub.github.io/images/ScimGateway.svg)
41
42
 
42
- SCIM Gateway is based on the popular asynchronous event driven framework [Node.js](https://nodejs.dev/) using JavaScript. It is firewall friendly using REST webservices. Runs on almost all operating systems, and may load balance between hosts (horizontal) and cpu's (vertical). Could even be uploaded and run as a cloud application.
43
+ SCIM Gateway is based on the popular asynchronous event driven framework [Node.js](https://nodejs.dev/) using JavaScript. It is cloud and firewall friendly using REST webservices. Runs on almost all operating systems, and may load balance between hosts (horizontal) and cpu's (vertical).
43
44
 
44
45
  **Following example plugins are included:**
45
46
 
@@ -52,18 +53,18 @@ Setting `{"persistence": true}` gives persistence file store (no test users)
52
53
  Example of a fully functional SCIM Gateway plugin
53
54
 
54
55
  * **MongoDB** (NoSQL Document-Oriented Database)
55
- Same as plugin "Loki" but using MongoDB
56
+ Same as plugin "Loki", but using external MongoDB
56
57
  Shows how to implement a highly configurable multi tenant or multi endpoint solution through `baseEntity` in URL
57
58
 
58
59
  * **SCIM** (REST Webservice)
59
- Demonstrates user provisioning towards a SCIM endpoint using REST
60
+ Demonstrates user provisioning towards REST-Based endpoint (type SCIM)
60
61
  Using plugin "Loki" as SCIM endpoint
61
62
  Can be used as SCIM version-gateway e.g. 1.1=>2.0 or 2.0=>1.1
62
63
  Can be used to chain several SCIM Gateway's
63
64
 
64
65
 
65
66
  * **Forwardinc** (SOAP Webservice)
66
- Demonstrates provisioning towards SOAP-Based endpoint
67
+ Demonstrates user provisioning towards SOAP-Based endpoint
67
68
  Using endpoint Forwardinc that comes with Broadcom/CA IM SDK (SDKWS) - [wiki.ca.com](https://docops.ca.com/ca-identity-manager/12-6-8/EN/programming/connector-programming-reference/sdk-sample-connectors/sdkws-sdk-web-services-connector/sdkws-sample-connector-build-requirements "wiki.ca.com")
68
69
  Shows how to implement a highly configurable multi tenant or multi endpoint solution through `baseEntity` in URL
69
70
 
@@ -103,7 +104,7 @@ Node.js is a prerequisite and have to be installed on the server.
103
104
  #### Install SCIM Gateway
104
105
 
105
106
  Open a command window (run as administrator)
106
- Create your own package directory e.g. C:\my-scimgateway and install SCIM Gateway within this package.
107
+ Create your own package directory e.g. c:\my-scimgateway and install SCIM Gateway within this package.
107
108
 
108
109
  mkdir c:\my-scimgateway
109
110
  cd c:\my-scimgateway
@@ -127,22 +128,22 @@ If internet connection is blocked, we could install on another machine and copy
127
128
  => Health check with a "hello" response
128
129
 
129
130
  http://localhost:8880/Users
130
- http://localhost:8880/Groups
131
- or
132
- http://localhost:8880/Users?attributes=userName
133
- http://localhost:8880/Groups?attributes=displayName
131
+ http://localhost:8880/Groups
134
132
  => Logon using gwadmin/password and two users and groups should be listed
135
133
 
136
134
  http://localhost:8880/Users/bjensen
137
135
  http://localhost:8880/Groups/Admins
136
+ or
137
+ http://localhost:8880/Users?filter=userName eq "bjensen"
138
+ http://localhost:8880/Groups?filter=displayName eq "Admins"
138
139
  => Lists all attributes for specified user/group
139
140
 
140
141
  http://localhost:8880/Groups?filter=displayName eq "Admins"&excludedAttributes=members
142
+ http://localhost:8880/Groups?filter=members.value eq "bjensen"&attributes=id,displayName,members.value
141
143
  http://localhost:8880/Users?filter=userName eq "bjensen"&attributes=userName,id,name.givenName
142
144
  http://localhost:8880/Users?filter=meta.created ge "2010-01-01T00:00:00Z"&attributes=userName,name.familyName,meta.created
143
145
  http://localhost:8880/Users?filter=emails.value co "@example.com"&attributes=userName,name.familyName,emails&sortBy=name.familyName&sortOrder=descending
144
- => Filtering examples
145
-
146
+ => Filtering and attribute examples
146
147
 
147
148
  "Ctrl + c" to stop the SCIM Gateway
148
149
 
@@ -171,7 +172,7 @@ Upgrade to latest minor version:
171
172
  cd c:\my-scimgateway
172
173
  npm install scimgateway
173
174
 
174
- Note, always backup/copy C:\\my-scimgateway before upgrading. Custom plugins and corresponding configuration files will not be affected.
175
+ Note, always backup/copy c:\\my-scimgateway before upgrading. Custom plugins and corresponding configuration files will not be affected.
175
176
 
176
177
  To force a major upgrade (version x.\*.\* => y.\*.\*) that will brake compability with any existing custom plugins, we have to include the `@latest` suffix in the install command: `npm install scimgateway@latest`
177
178
 
@@ -1142,6 +1143,18 @@ MIT © [Jarle Elshaug](https://www.elshaug.xyz)
1142
1143
 
1143
1144
  ## Change log
1144
1145
 
1146
+ ### v4.1.6
1147
+ [Added]
1148
+ - Dependencies bump
1149
+
1150
+ ### v4.1.5
1151
+ [Added]
1152
+
1153
+ Announcing some SCIM Gateway related news:
1154
+
1155
+ - [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
1156
+
1157
+
1145
1158
  ### v4.1.4
1146
1159
  [Fixed]
1147
1160
 
@@ -1307,6 +1307,7 @@ const ScimGateway = function () {
1307
1307
  delete newObj.externalId
1308
1308
  delete newObj.groups // do not support "group member of users"
1309
1309
  delete newObj.schemas
1310
+ delete newObj.meta
1310
1311
  if (handle.getMethod === handler.groups.getMethod) delete newObj.displayName
1311
1312
 
1312
1313
  let [scimdata, err] = ScimGateway.prototype.convertedScim(newObj)
package/lib/utils.js CHANGED
@@ -190,7 +190,7 @@ module.exports.copyObj = (o) => { // deep copy/clone faster than JSON.parse(JSON
190
190
  return output
191
191
  }
192
192
 
193
- module.exports.extendObj = (obj, src) => { // copy src content into obj
193
+ const extendObj = (obj, src) => {
194
194
  Object.keys(src).forEach((key) => {
195
195
  if (typeof src[key] === 'object' && src[key] != null) {
196
196
  if (typeof obj[key] === 'undefined') obj[key] = src[key]
@@ -222,6 +222,11 @@ module.exports.extendObj = (obj, src) => { // copy src content into obj
222
222
  return obj
223
223
  }
224
224
 
225
+ module.exports.extendObj = (obj, src) => { // copy src content into obj
226
+ if (typeof src !== 'object' || Array.isArray(src)) return obj
227
+ return extendObj(obj, src)
228
+ }
229
+
225
230
  module.exports.stripObj = (obj, attributes, excludedAttributes) => { // strip and return a new object according to attributes or excludedAttributes - comma separated dot object list
226
231
  if (!attributes && !excludedAttributes) return obj
227
232
  if (!obj || typeof obj !== 'object') return obj
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scimgateway",
3
- "version": "4.1.4",
3
+ "version": "4.1.6",
4
4
  "description": "Using SCIM protocol as a gateway for user provisioning to other endpoints",
5
5
  "author": "Jarle Elshaug <jarle.elshaug@gmail.com> (https://elshaug.xyz)",
6
6
  "homepage": "https://elshaug.xyz",
@@ -34,22 +34,22 @@
34
34
  "dependencies": {
35
35
  "callsite": "^1.0.0",
36
36
  "dot-object": "^2.1.4",
37
- "https-proxy-agent": "^5.0.0",
37
+ "https-proxy-agent": "^5.0.1",
38
38
  "is-in-subnet": "^4.0.1",
39
39
  "jsonwebtoken": "^8.5.1",
40
40
  "koa": "^2.13.4",
41
41
  "koa-bodyparser": "^4.3.0",
42
- "koa-router": "^10.1.1",
43
- "ldapjs": "^2.3.1",
42
+ "koa-router": "^12.0.0",
43
+ "ldapjs": "^2.3.3",
44
44
  "lokijs": "^1.5.12",
45
- "mongodb": "^4.2.0",
45
+ "mongodb": "^4.10.0",
46
46
  "node-machine-id": "1.1.9",
47
- "nodemailer": "^6.7.1",
48
- "passport": "^0.5.2",
49
- "passport-azure-ad": "^4.3.1",
50
- "soap": "^0.43.0",
51
- "tedious": "^14.0.0",
52
- "winston": "^3.4.0"
47
+ "nodemailer": "^6.7.8",
48
+ "passport": "^0.6.0",
49
+ "passport-azure-ad": "^4.3.4",
50
+ "soap": "^0.45.0",
51
+ "tedious": "^15.1.0",
52
+ "winston": "^3.8.2"
53
53
  },
54
54
  "devDependencies": {
55
55
  "chai": "^4.2.0",