scimgateway 5.3.7 → 5.3.8
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 +107 -8
- package/bun.lock +154 -133
- package/config/plugin-api.json +5 -0
- package/config/plugin-entra-id.json +5 -0
- package/config/plugin-ldap.json +5 -0
- package/config/plugin-loki.json +5 -0
- package/config/plugin-mongodb.json +5 -0
- package/config/plugin-mssql.json +5 -0
- package/config/plugin-saphana.json +5 -0
- package/config/plugin-scim.json +5 -0
- package/config/plugin-soap.json +5 -0
- package/lib/helper-rest.ts +7 -8
- package/lib/scimgateway.ts +103 -32
- package/lib/utils.ts +2 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -16,8 +16,9 @@ Validated through IdP's:
|
|
|
16
16
|
|
|
17
17
|
Latest news:
|
|
18
18
|
|
|
19
|
-
- [
|
|
20
|
-
- [
|
|
19
|
+
- [Azure Relay](https://learn.microsoft.com/en-us/azure/azure-relay/relay-what-is-it) is now supported for secure and hassle-free outbound communication — with just one minute of configuration
|
|
20
|
+
- [ETag](https://datatracker.ietf.org/doc/html/rfc7644#section-3.14) is now supported
|
|
21
|
+
- [Bulk Operations](https://datatracker.ietf.org/doc/html/rfc7644#section-3.7) is now supported
|
|
21
22
|
- Remote real-time log subscription for monitoring and centralized logging
|
|
22
23
|
using browser and url: `https://<host>/logger`
|
|
23
24
|
`curl -N https://<host>/logger -u user:password`
|
|
@@ -42,7 +43,7 @@ custom client API, see configuration notes
|
|
|
42
43
|
|
|
43
44
|
## Overview
|
|
44
45
|
|
|
45
|
-
SCIM Gateway facilitates user management using the standardized REST-based SCIM 1.1 or 2.0 protocol, offering easier, more powerful, and consistent provisioning while avoiding vendor lock-in. Acting as a translator for incoming SCIM requests, the gateway seamlessly enables CRUD functionality (create, read, update, and delete) for users and groups. By implementing endpoint-specific protocols, it ensures
|
|
46
|
+
SCIM Gateway facilitates user management using the standardized REST-based SCIM 1.1 or 2.0 protocol, offering easier, more powerful, and consistent provisioning while avoiding vendor lock-in. Acting as a translator for incoming SCIM requests, the gateway seamlessly enables CRUD functionality (create, read, update, and delete) for users and groups. By implementing endpoint-specific protocols, it ensures provisioning across diverse destinations. With the gateway, your destinations effectively become SCIM endpoints, streamlining integration and simplifying user management.
|
|
46
47
|
|
|
47
48
|
|
|
48
49
|

|
|
@@ -129,7 +130,7 @@ If internet connection is blocked, we could install on another machine and copy
|
|
|
129
130
|
|
|
130
131
|
bun c:\my-scimgateway
|
|
131
132
|
|
|
132
|
-
Start a browser
|
|
133
|
+
Start a browser
|
|
133
134
|
|
|
134
135
|
http://localhost:8880/ping
|
|
135
136
|
=> Health check with a "hello" response
|
|
@@ -138,7 +139,7 @@ If internet connection is blocked, we could install on another machine and copy
|
|
|
138
139
|
http://localhost:8880/Groups
|
|
139
140
|
=> Logon using gwadmin/password and two users and groups should be listed
|
|
140
141
|
|
|
141
|
-
Start a new browser for log monitoring (
|
|
142
|
+
Start a new browser for log monitoring (might not be supported by Safari)
|
|
142
143
|
using url: http://localhost:8880/logger
|
|
143
144
|
|
|
144
145
|
http://localhost:8880/Users/bjensen
|
|
@@ -160,7 +161,7 @@ If internet connection is blocked, we could install on another machine and copy
|
|
|
160
161
|
>Tip, take a look at bun test scripts located in `node_modules\scimgateway\test\lib`
|
|
161
162
|
|
|
162
163
|
> If using Node.js instead of Bun, scimgateway must be downloaded from github because Node.js does not support native typescript used by modules. Startup will then be:
|
|
163
|
-
`node --experimental-strip-types c:\
|
|
164
|
+
`node --experimental-strip-types c:\scimgateway\index.ts`
|
|
164
165
|
|
|
165
166
|
#### Upgrade SCIM Gateway
|
|
166
167
|
|
|
@@ -435,7 +436,7 @@ Definitions in `endpoint` object are customized according to our plugin code. Pl
|
|
|
435
436
|
|
|
436
437
|
Example of how to make a self signed certificate:
|
|
437
438
|
|
|
438
|
-
openssl
|
|
439
|
+
openssl req -nodes -newkey rsa:2048 -x509 -sha256 -days 3650 -keyout key.pem -out cert.pem -subj "/O=My Company/OU=Application/CN=SCIM Gateway" -addext "subjectAltName=DNS:localhost,DNS:127.0.0.1,DNS:*.mycompany.com" -addext "extendedKeyUsage=serverAuth" -addext "keyUsage=digitalSignature"
|
|
439
440
|
|
|
440
441
|
Note, when using Symantec/Broadcom Provisioning, the "certificate authority - CA" also must be imported on the Connector Server. For self-signed certificate, CA and the certificate (public key) is the same.
|
|
441
442
|
|
|
@@ -475,12 +476,18 @@ Definitions in `endpoint` object are customized according to our plugin code. Pl
|
|
|
475
476
|
- **email.proxy.password** - password if authentication is required
|
|
476
477
|
- **email.emailOnError** - Contains configuration for sending error notifications by email. Note, only the first error will be sent until sendInterval have passed
|
|
477
478
|
- **email.emailOnError.enabled** - true or false, value set to true will enable email notifications
|
|
478
|
-
- **email.emailOnError.sendInterval** - Default 15. Mail notifications on error are deferred until sendInterval **minutes** have passed since the last notification
|
|
479
|
+
- **email.emailOnError.sendInterval** - Default 15. Mail notifications on error are deferred until sendInterval **minutes** have passed since the last notification
|
|
479
480
|
- **email.emailOnError.from** - Sender email addresses e.g: "noreply@example.com". **Mandatory for oauth**. For smtp email.auth.options.username will be used
|
|
480
481
|
- **email.emailOnError.to** - Comma separated list of recipients email addresses e.g: "someone@example.com"
|
|
481
482
|
- **email.emailOnError.cc** - Optional comma separated list of cc mail addresses
|
|
482
483
|
- **email.emailOnError.subject** - Optional mail subject, default `SCIM Gateway error message`
|
|
483
484
|
|
|
485
|
+
- **azureRelay** - Azure Relay outbound listener
|
|
486
|
+
- **azureRelay.enabled** - true or false, true will enable the Azure Relay listener
|
|
487
|
+
- **azureRelay.connectionUrl** - `https://<namespace-name>.servicebus.windows.net/<hybrid-connection-name>` - `<namespace-name>` is the name of the Relay created and `<hybrid-connection-name>` is the name of the Hybrid Connection entity created in the Relay
|
|
488
|
+
- **azureRelay.apiKey** - The `Private Key` found in the `Shared access policy` (RootManageSharedaccessKey)
|
|
489
|
+
- **azureRelay.keyRule** - Optional, the `Shared access policy` name - default using `RootManageSharedaccessKey`
|
|
490
|
+
|
|
484
491
|
- **stream** - See [SCIM Stream](https://elshaug.xyz/docs/scim-stream) for configuration details
|
|
485
492
|
|
|
486
493
|
- **endpoint** - Contains endpoint specific configuration according to customized **plugin code**.
|
|
@@ -835,6 +842,53 @@ Example code implementing subscriber for real-time log messages collection
|
|
|
835
842
|
|
|
836
843
|
console.log('\n\ndone!')
|
|
837
844
|
|
|
845
|
+
### Configuration notes - Azure Relay
|
|
846
|
+
|
|
847
|
+
Using Azure technology we have different options for setting up a communication tunnel to SCIM Gateway:
|
|
848
|
+
|
|
849
|
+
- `Microsoft Entra Application Proxy + Microsoft Entra Application Proxy Connector` (SCIM Gateway located on-premises or using Azure private VNet/IP)
|
|
850
|
+
- `Azure Application Gateway` - Layer 7 (SCIM Gateway located in Azure)
|
|
851
|
+
- `Azure Relay` (SCIM Gateway located on-premises or in Azure)
|
|
852
|
+
|
|
853
|
+
SCIM Gateway have builtin [Azure Relay](https://learn.microsoft.com/en-us/azure/azure-relay/relay-what-is-it) support which gives secure and hassle-free outbound communication — with just one minute of configuration
|
|
854
|
+
|
|
855
|
+
Azure pricing for using Azure Relay is approx. 10$ per month for each listener (SCIM Gateway plugin)
|
|
856
|
+
|
|
857
|
+
**Using out-of-the-box Azure Relay:**
|
|
858
|
+
|
|
859
|
+
- Prerequisite: SCIM Gateway having outbound internet access (https/443)
|
|
860
|
+
- In Azure create a `Relay` - `<namespace-name>`
|
|
861
|
+
- In the Relay, create an entity of type `Hybrid Connection` - `<hybrid-connection-name>` **one for each SCIM Gateway plugin**
|
|
862
|
+
- The `Requires Client Authorization` option **should be unchecked (not activated)**, unless we are using custom IdP/API having logic for including SAS-token in the communication header
|
|
863
|
+
- Shared access policies - RootManageSharedaccessKey - Primary Key (copy this one)
|
|
864
|
+
Instead of RootManageSharedaccessKey policy in the `<namespace-name>`, we could create dedicated policy in the sub level `<hybrid-connection-name>` and use this policy name in plugin configuration `scimgateway.azureRelay.keyRule`
|
|
865
|
+
|
|
866
|
+
SCIM Gateway plugin configuration:
|
|
867
|
+
|
|
868
|
+
```
|
|
869
|
+
{
|
|
870
|
+
"scimgateway: {
|
|
871
|
+
...
|
|
872
|
+
"azureRelay": {
|
|
873
|
+
"enabled": true,
|
|
874
|
+
"connectionUrl": "https://<namespace-name>.servicebus.windows.net/<hybrid-connection-name>",
|
|
875
|
+
"apiKey": "<primary-key>"
|
|
876
|
+
},
|
|
877
|
+
...
|
|
878
|
+
},
|
|
879
|
+
...
|
|
880
|
+
}
|
|
881
|
+
````
|
|
882
|
+
|
|
883
|
+
`connectionUrl` will be the SCIM base URL used by IdP/API for accessing SCIM Gateway
|
|
884
|
+
|
|
885
|
+
Example:
|
|
886
|
+
GET `https://<namespace-name>.servicebus.windows.net/<hybrid-connection-name>/Users`
|
|
887
|
+
GET `https://<namespace-name>.servicebus.windows.net/<hybrid-connection-name>/<baseEntity>/Users`
|
|
888
|
+
|
|
889
|
+
If several SCIM Gateway´s (same plugin) connect listeners using the same Azure Relay connectionUrl, there will be load-balancing and round-robin distribution
|
|
890
|
+
|
|
891
|
+
|
|
838
892
|
## Manual startup
|
|
839
893
|
|
|
840
894
|
Gateway can be started from a command window running in administrative mode
|
|
@@ -1408,6 +1462,51 @@ MIT © [Jarle Elshaug](https://www.elshaug.xyz)
|
|
|
1408
1462
|
|
|
1409
1463
|
## Change log
|
|
1410
1464
|
|
|
1465
|
+
### v5.3.8
|
|
1466
|
+
|
|
1467
|
+
[Improved]
|
|
1468
|
+
|
|
1469
|
+
- [Azure Relay](https://learn.microsoft.com/en-us/azure/azure-relay/relay-what-is-it) is now supported for secure and hassle-free outbound communication — with just one minute of configuration
|
|
1470
|
+
|
|
1471
|
+
Using Azure technology we have different options for setting up a communication tunnel to SCIM Gateway:
|
|
1472
|
+
|
|
1473
|
+
`Microsoft Entra Application Proxy + Microsoft Entra Application Proxy Connector` (SCIM Gateway located on-premises or using Azure private VNet/IP)
|
|
1474
|
+
`Azure Application Gateway` - Layer 7 (SCIM Gateway located in Azure)
|
|
1475
|
+
`Azure Relay` (SCIM Gateway located on-premises or in Azure)
|
|
1476
|
+
|
|
1477
|
+
Azure pricing for using Azure Relay is approx. 10$ per month for each listener (SCIM Gateway plugin)
|
|
1478
|
+
|
|
1479
|
+
**Using out-of-the-box Azure Relay:**
|
|
1480
|
+
|
|
1481
|
+
Prerequisite: SCIM Gateway having outbound internet access (https/443)
|
|
1482
|
+
In Azure create a `Relay` - `<namespace-name>`
|
|
1483
|
+
In the Relay, create an entity of type `Hybrid Connection` - `<hybrid-connection-name>` **one for each SCIM Gateway plugin**
|
|
1484
|
+
The `Requires Client Authorization` option **should be unchecked (not activated)**, unless we are using custom IdP/API having logic for including SAS-token in the communication header
|
|
1485
|
+
Shared access policies - RootManageSharedaccessKey - Primary Key (copy this one)
|
|
1486
|
+
|
|
1487
|
+
SCIM Gateway plugin configuration:
|
|
1488
|
+
|
|
1489
|
+
{
|
|
1490
|
+
"scimgateway: {
|
|
1491
|
+
...
|
|
1492
|
+
"azureRelay": {
|
|
1493
|
+
"enabled": true,
|
|
1494
|
+
"connectionUrl": "https://<namespace-name>.servicebus.windows.net/<hybrid-connection-name>",
|
|
1495
|
+
"apiKey": "<primary-key>"
|
|
1496
|
+
},
|
|
1497
|
+
...
|
|
1498
|
+
},
|
|
1499
|
+
...
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
`connectionUrl` will be the SCIM base URL used by IdP/API for accessing SCIM Gateway
|
|
1503
|
+
|
|
1504
|
+
Example:
|
|
1505
|
+
GET `https://<namespace-name>.servicebus.windows.net/<hybrid-connection-name>/Users`
|
|
1506
|
+
GET `https://<namespace-name>.servicebus.windows.net/<hybrid-connection-name>/<baseEntity>/Users`
|
|
1507
|
+
|
|
1508
|
+
If several SCIM Gateway´s (same plugin) connect listeners using the same Azure Relay connectionUrl, there will be load-balancing and round-robin distribution
|
|
1509
|
+
|
|
1411
1510
|
### v5.3.7
|
|
1412
1511
|
|
|
1413
1512
|
[Improved]
|