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 CHANGED
@@ -16,8 +16,9 @@ Validated through IdP's:
16
16
 
17
17
  Latest news:
18
18
 
19
- - [ETag](https://datatracker.ietf.org/doc/html/rfc7644#section-3.14) now supported
20
- - [Bulk Operations](https://datatracker.ietf.org/doc/html/rfc7644#section-3.7) now supported
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 precise and efficient provisioning across diverse destinations. With the gateway, your diverse destinations effectively become SCIM endpoints, streamlining integration and simplifying user management.
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
  ![](https://jelhub.github.io/images/ScimGateway.svg)
@@ -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 (note, Edge do not pop-up logon dialog box when using http)
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 (info level)
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:\my-scimgateway\index.ts`
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.exe 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
+ 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]