@connectid-tools/rp-nodejs-sdk 4.2.0 → 5.0.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.
Files changed (98) hide show
  1. package/README.md +284 -237
  2. package/package.json +7 -5
  3. package/{config.js → src/config.js} +2 -31
  4. package/src/conformance/api/conformance-api.d.ts +38 -0
  5. package/src/conformance/api/conformance-api.js +53 -0
  6. package/src/conformance/config.json +60 -0
  7. package/src/conformance/conformance-config.d.ts +2 -0
  8. package/src/conformance/conformance-config.js +34 -0
  9. package/src/conformance/conformance.test.js +101 -0
  10. package/src/conformance/variant.json +1 -0
  11. package/src/crypto/crypto-loader.d.ts +32 -0
  12. package/src/crypto/crypto-loader.js +49 -0
  13. package/src/crypto/jwt-helper.d.ts +61 -0
  14. package/src/crypto/jwt-helper.js +92 -0
  15. package/src/crypto/pkce-helper.d.ts +43 -0
  16. package/src/crypto/pkce-helper.js +75 -0
  17. package/src/endpoints/participants-endpoint.d.ts +55 -0
  18. package/src/endpoints/participants-endpoint.js +137 -0
  19. package/src/endpoints/pushed-authorisation-request-endpoint.d.ts +87 -0
  20. package/src/endpoints/pushed-authorisation-request-endpoint.js +192 -0
  21. package/src/endpoints/retrieve-token-endpoint.d.ts +66 -0
  22. package/src/endpoints/retrieve-token-endpoint.js +159 -0
  23. package/src/endpoints/userinfo-endpoint.d.ts +24 -0
  24. package/src/endpoints/userinfo-endpoint.js +50 -0
  25. package/src/fapi/fapi-utils.d.ts +6 -0
  26. package/src/fapi/fapi-utils.js +9 -0
  27. package/src/http/http-client-extensions.d.ts +60 -0
  28. package/src/http/http-client-extensions.js +106 -0
  29. package/src/http/http-client-factory.d.ts +27 -0
  30. package/src/http/http-client-factory.js +45 -0
  31. package/src/integration/integration.test.d.ts +1 -0
  32. package/src/integration/integration.test.js +30 -0
  33. package/src/model/callback-params.d.ts +31 -0
  34. package/src/model/callback-params.js +1 -0
  35. package/src/model/claims.d.ts +100 -0
  36. package/src/model/claims.js +1 -0
  37. package/src/model/consolidated-token-set.d.ts +74 -0
  38. package/src/model/consolidated-token-set.js +100 -0
  39. package/src/model/discovery-service.d.ts +46 -0
  40. package/src/model/discovery-service.js +112 -0
  41. package/src/model/issuer-metadata.d.ts +165 -0
  42. package/src/model/issuer-metadata.js +1 -0
  43. package/src/model/jwks.d.ts +12 -0
  44. package/src/model/jwks.js +1 -0
  45. package/src/model/token-response.d.ts +31 -0
  46. package/src/model/token-response.js +1 -0
  47. package/src/model/token-set.d.ts +73 -0
  48. package/src/model/token-set.js +179 -0
  49. package/src/relying-party-client-sdk.d.ts +68 -0
  50. package/src/relying-party-client-sdk.js +150 -0
  51. package/src/test-data/large-participants-test-data.d.ts +865 -0
  52. package/src/test-data/large-participants-test-data.js +18907 -0
  53. package/src/test-data/participants-test-data.d.ts +149 -0
  54. package/src/test-data/participants-test-data.js +458 -0
  55. package/src/test-data/sandbox-participants-test-data.d.ts +865 -0
  56. package/src/test-data/sandbox-participants-test-data.js +3794 -0
  57. package/src/tests/cert-utils.test.d.ts +1 -0
  58. package/src/tests/cert-utils.test.js +13 -0
  59. package/src/tests/functional-utils.test.d.ts +1 -0
  60. package/src/tests/functional-utils.test.js +13 -0
  61. package/src/tests/participant-filters.test.d.ts +1 -0
  62. package/src/tests/participant-filters.test.js +151 -0
  63. package/src/tests/pushed-authorisation-request-endpoint.test.d.ts +1 -0
  64. package/src/tests/pushed-authorisation-request-endpoint.test.js +159 -0
  65. package/src/tests/relying-party-client-sdk.test.d.ts +1 -0
  66. package/src/tests/relying-party-client-sdk.test.js +313 -0
  67. package/src/tests/request-utils.test.d.ts +1 -0
  68. package/src/tests/request-utils.test.js +16 -0
  69. package/src/tests/system-information.test.d.ts +1 -0
  70. package/src/tests/system-information.test.js +16 -0
  71. package/src/tests/user-agent.test.d.ts +1 -0
  72. package/src/tests/user-agent.test.js +23 -0
  73. package/src/tests/validator.test.d.ts +1 -0
  74. package/src/tests/validator.test.js +38 -0
  75. package/{types.d.ts → src/types.d.ts} +61 -32
  76. package/src/types.js +1 -0
  77. package/{utils → src/utils}/request-utils.d.ts +1 -1
  78. package/src/utils/request-utils.js +8 -0
  79. package/{utils → src/utils}/user-agent.d.ts +1 -1
  80. package/src/utils/user-agent.js +4 -0
  81. package/relying-party-client-sdk.d.ts +0 -37
  82. package/relying-party-client-sdk.js +0 -364
  83. package/utils/request-utils.js +0 -8
  84. package/utils/user-agent.js +0 -6
  85. /package/{config.d.ts → src/config.d.ts} +0 -0
  86. /package/{types.js → src/conformance/conformance.test.d.ts} +0 -0
  87. /package/{filter → src/filter}/participant-filters.d.ts +0 -0
  88. /package/{filter → src/filter}/participant-filters.js +0 -0
  89. /package/{logger.d.ts → src/logger.d.ts} +0 -0
  90. /package/{logger.js → src/logger.js} +0 -0
  91. /package/{utils → src/utils}/cert-utils.d.ts +0 -0
  92. /package/{utils → src/utils}/cert-utils.js +0 -0
  93. /package/{utils → src/utils}/functional-utils.d.ts +0 -0
  94. /package/{utils → src/utils}/functional-utils.js +0 -0
  95. /package/{utils → src/utils}/system-information.d.ts +0 -0
  96. /package/{utils → src/utils}/system-information.js +0 -0
  97. /package/{validator.d.ts → src/validator.d.ts} +0 -0
  98. /package/{validator.js → src/validator.js} +0 -0
package/README.md CHANGED
@@ -1,18 +1,19 @@
1
- # Relying Party Node.JS SDK
1
+ # Relying Party Node.js SDK
2
2
 
3
3
  The rp-nodejs-sdk provides an SDK to allows Relying Parties easily integrate with the Digital Identity ecosystem.
4
4
 
5
5
  # Getting Started
6
6
 
7
- > A minimum of Node JS version 20.x is recommended. Download [here](https://nodejs.org/download/release/v20.9.0/).
7
+ > A minimum of Node.js version 20.x is recommended. Download [here](https://nodejs.org/download/release/v20.9.0/).
8
8
 
9
- Install the package in your nodejs project using:
9
+ Install the package in your Node.js project using:
10
10
 
11
11
  ```shell
12
12
  npm install @connectid-tools/rp-nodejs-sdk
13
13
  ```
14
14
 
15
15
  Update your `package.json` to use `module`:
16
+
16
17
  ```json
17
18
  {
18
19
  .
@@ -25,23 +26,26 @@ Update your `package.json` to use `module`:
25
26
  You can then import and instantiate an instance of the rp-nodejs-sdk using:
26
27
 
27
28
  ```javascript
28
- import { config } from './config.js';
29
- import RelyingPartyClientSdk from './relying-party-client-sdk';
29
+ import { config } from './config.js'
30
+ import RelyingPartyClientSdk from './relying-party-client-sdk'
30
31
 
31
- const rpClient = new RelyingPartyClientSdk(config);
32
+ const rpClient = new RelyingPartyClientSdk(config)
32
33
  ```
33
34
 
34
35
  The above code assumes that you have a config file called `config.js` in your project folder that contains
35
36
  the configuration required for the sdk, eg: the location of the certificate files, the client details,
36
37
  the callback urls, etc. The configuration attributes are described below.
37
38
 
38
- ## Using Typescript
39
- To use Node SDK with Typescript you need to make the following changes in your `tsconfig.json`:
40
- * Set `"target: "es2016"` or higher
41
- * Have `"module": "ES2015"` or higher
42
- * Have `"moduleResolution": "Bundler"`
39
+ ## Using TypeScript
40
+
41
+ To use the Node.js SDK with TypeScript you'll need to make the following changes in your `tsconfig.json`:
42
+
43
+ - Set `"target: "es2016"` or higher
44
+ - Have `"module": "ES2015"` or higher
45
+ - Have `"moduleResolution": "Bundler"`
43
46
 
44
47
  Sample tsconfig:
48
+
45
49
  ```json
46
50
  {
47
51
  "compilerOptions": {
@@ -49,13 +53,17 @@ Sample tsconfig:
49
53
  "module": "ES2015",
50
54
  "moduleResolution": "Bundler",
51
55
  "strictNullChecks": true,
52
- "outDir": "dist/",
56
+ "outDir": "dist/"
53
57
  },
54
58
  "include": ["**/*.ts"]
55
59
  }
56
60
  ```
61
+
57
62
  ### Setting up SDK config options
58
- `RelyingPartyClientSdkConfig` has some fixed values, specially inside `client` object, to be able to set the config options for the SDK some type gymnastics will be needed as shown below (see `as const`):
63
+
64
+ `RelyingPartyClientSdkConfig` has some fixed values. To be able to set the config
65
+ options for the SDK you can use the example as below:
66
+
59
67
  ```typescript
60
68
  // index.ts
61
69
  import RelyingPartyClientSdk from '@connectid-tools/rp-nodejs-sdk'
@@ -68,37 +76,11 @@ const relyingPartyClientSdk = new RelyingPartyClientSdk(config)
68
76
  // config.ts
69
77
  export const config = {
70
78
  data: {
71
- .
72
- .
73
- .
74
- log_level: 'info' as const,
75
- .
76
- .
77
- .
78
- client: {
79
- .
80
- .
81
- .
82
- application_type: 'web' as const,
83
- grant_types: ['client_credentials', 'authorization_code', 'implicit'] as ['client_credentials', 'authorization_code', 'implicit'],
84
- id_token_signed_response_alg: 'PS256' as const,
85
- post_logout_redirect_uris: [] as [],
86
- require_auth_time: false as const,
87
- response_types: ['code id_token', 'code'] as ['code id_token', 'code'],
88
- subject_type: 'public' as const,
89
- token_endpoint_auth_method: 'private_key_jwt' as const,
90
- token_endpoint_auth_signing_alg: 'PS256' as const,
91
- introspection_endpoint_auth_method: 'private_key_jwt' as const,
92
- revocation_endpoint_auth_method: 'private_key_jwt' as const,
93
- request_object_signing_alg: 'PS256' as const,
94
- require_signed_request_object: true as const,
95
- require_pushed_authorization_requests: true as const,
96
- authorization_signed_response_alg: 'PS256' as const,
97
- tls_client_certificate_bound_access_tokens: true as const,
98
- backchannel_user_code_parameter: false as const,
99
- scope: 'openid' as const,
100
- software_roles: ['RP-CORE'] as ['RP-CORE'],
101
- },
79
+ .
80
+ .
81
+ .
82
+ log_level: 'info' as const,
83
+ }
102
84
  ```
103
85
 
104
86
  # rp-nodejs-sdk Configuration
@@ -112,36 +94,32 @@ the configuration properties is available from: <https://github.com/connectid-to
112
94
  The simplest way to pass in the configuration is shown below (assumes the `config.js` file is in the project directory):
113
95
 
114
96
  ```javascript
115
- const config = require('./config');
116
- const RelyingPartyClientSdk = require('@connectid-tools/rp-nodejs-sdk');
117
- const rpClient = new RelyingPartyClientSdk(config);
97
+ const config = require('./config')
98
+ const RelyingPartyClientSdk = require('@connectid-tools/rp-nodejs-sdk')
99
+ const rpClient = new RelyingPartyClientSdk(config)
118
100
  ```
119
101
 
120
- | Property | Description | Example value |
121
- |---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
122
- | `ca_pem` | The collection of trusted root certificates that can be used for certification validation. May be an absolute or relative path. | `'./conf/ca.pem' ` |
123
- | `ca_pem_content` | The collection of trusted root certificates content (string) that can be used for certification validation. Overrides `ca_pem`. | `'-----BEGIN CERTIFICATE----- MIIFnTCCBIWgAwIBAgIUKl2OAbHVc1r9isRs6WIExS/1BLgwDQYJKoZIhvcNAQEL...'` |
124
- | `signing_kid` | The id for the signing key in the JWKS. This can be found in the registry via Software Statements -> Client Details -> Certificates | `'Xf1Pf-GXyhryOY5wwg0ddL5yzUicIcQrOIxja0yHhpg'` |
125
- | `signing_key` | The path to the signing key used when signing requests. May be an absolute or relative path. `signing_key` or `signing_key_content` must be used to provide the signing key. | `'./conf/signing.key'` |
126
- | `signing_key_content` | The signing key content (string) used when signing requests. If supplied, will override the key data supplied via `signing_key`. | `'-----BEGIN PRIVATE KEY----- MIIFnTCCBIWgAwIBAgIUKl2OAbHVc1r9isRs6WIExS/1BLgwDQYJKoZIhvcNAQEL...'` |
127
- | `registry_participants_uri` | The URI for the registry endpoint that provides the participant list | `https://data.directory.sandbox.connectid.com.au/participants` |
128
- | `signing_pem` | The path to the signing certificate used when signing requests. May be an absolute or relative path. | `'./conf/signing.pem'` |
129
- | `transport_key` | The path to the transport key used for mutual TLS. May be an absolute or relative path. `transport_key` or `transport_key_content` must be used to provide the transport key. | `'./conf/transport.key'` |
130
- | `transport_key_content` | The transport key content (string) used for mutual TLS. If supplied, will override the key data supplied via `transport_key`. | `'-----BEGIN PRIVATE KEY----- MIIFnTCCBIWgAwIBAgIUKl2OAbHVc1r9isRs6WIExS/1BLgwDQYJKoZIhvcNAQEL...'` |
131
- | `transport_pem` | The path to the transport certificate used for mutual TLS. May be an absolute or relative path. `tranport_pem` or `transport_pem_content` must be used to provide the transport certificate | `'./conf/transport.pem'` |
132
- | `transport_pem_content` | The transport certificate content (string) used for mutual TLS. If supplied, will override the certificate supplied via `transport_pem`. | `'-----BEGIN CERTIFICATE----- MIIFnTCCBIWgAwIBAgIUKl2OAbHVc1r9isRs6WIExS/1BLgwDQYJKoZIhvcNAQEL...'` |
133
- | `application_redirect_uri` | The specific redirect url used for all requests from this rp-nodejs-sdk instance. Must be one of the redirect_urls specified in the registry for the client | `'https://tpp.localhost/cb'` |
134
- | `client.client_id` | Identifies the client. This value is available from the Registry via Software Statements -> Client Details -> Client ID | `'https://rp.directory.sandbox.connectid.com.au/openid_relying_party/280518db-9807-4824-b080-324d94b45f6a'` |
135
- | `client.organisation_id` | Identifies the organisation. This value is available from the Registry via Organisation Details | `'ab837240-9618-4953-966e-90fd1fa63999'` |
136
- | `client.jwks_uri` | The location of the JWKS for this client. Will be in the format: `'https://keystore.directory.sandbox.connectid.com.au/<organisation_id>/<client_id>/application.jwks'` | `'https://keystore.directory.sandbox.connectid.com.au/ab837240-9618-4953-966e-90fd1fa63999/090d41c6-fc27-4b1e-91e9-0fecfc240601/application.jwks'` |
137
- | `client.redirect_uris` | The list of redirect_uris supported by the client. Must only contain URIs specified in the registry. | `['https://demo.relyingpart.net/cb', 'https://tpp.localhost/cb',]` |
138
- | `log_level` | The log level to use for console logs, eg: 'info', 'debug'. Enabling 'debug' will cause all requests and responses to remote servers to be logged. 'debug' must not be used in Production as it will log Personal Information. | `'info'` |
139
- | `cache_ttl` | TTL for the participants list caching. Optional setting. Defaults to 600 seconds if not configured. | `600` |
140
- | `enable_auto_compliance_verification` | When running the OIDC FAPI compliance suite, it requires a call to userInfo after successfully decoding the response claims. If this is set to true, the SDK will automatically make the required call. | `false` |
141
- | `purpose` | The default purpose to be displayed to the consumer on the IDP consent screen to indicate why their data is being requested to be shared | `'verifying your identity'` |
142
- | `include_uncertified_participants` | By default the SDK will filter out all authorisation servers that are not fully certified. If you wish to test one of the uncertified auth servers you will need to set this to `true`. If not provided, defaults to 'false' | `false` |
143
- | `required_claims` | The list of claims that the RP will be using and requires IDPs to support. If supplied, this will be used to filter the list of IDPs returned from `getParticipants` so that only IDPs supporting the claims are returned. If this value is not supplied, no filtering by claim support will be performed. | `['name', 'address']` |
144
- | `required_participant_certifications` | The list of required certifications a server must support for the IDP use case (eg: TDIF Certification). If supplied, this will be used to filter the list of IDPs returned from `getParticipants` so that only IDPs with the certification are returned. If this value is not supplied, no filtering for specific certifications will be performed. | `[{ profileType: 'TDIF Accreditation', profileVariant: 'Identity Provider'}]` |
102
+ | Property | Description | Example value |
103
+ |---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------|
104
+ | `ca_pem` | The collection of trusted root certificates that can be used for certification validation. May be an absolute or relative path. | `'./conf/ca.pem' ` |
105
+ | `ca_pem_content` | The collection of trusted root certificates content (string) that can be used for certification validation. Overrides `ca_pem`. | `'-----BEGIN CERTIFICATE----- MIIFnTCCBIWgAwIBAgIUKl2OAbHVc1r9isRs6WIExS/1BLgwDQYJKoZIhvcNAQEL...'` |
106
+ | `signing_kid` | The id for the signing key in the JWKS. This can be found in the registry via Software Statements -> Client Details -> Certificates | `'Xf1Pf-GXyhryOY5wwg0ddL5yzUicIcQrOIxja0yHhpg'` |
107
+ | `signing_key` | The path to the signing key used when signing requests. May be an absolute or relative path. `signing_key` or `signing_key_content` must be used to provide the signing key. | `'./conf/signing.key'` |
108
+ | `signing_key_content` | The signing key content (string) used when signing requests. If supplied, will override the key data supplied via `signing_key`. | `'-----BEGIN PRIVATE KEY----- MIIFnTCCBIWgAwIBAgIUKl2OAbHVc1r9isRs6WIExS/1BLgwDQYJKoZIhvcNAQEL...'` |
109
+ | `registry_participants_uri` | The URI for the registry endpoint that provides the participant list | `https://data.directory.sandbox.connectid.com.au/participants` |
110
+ | `signing_pem` | The path to the signing certificate used when signing requests. May be an absolute or relative path. | `'./conf/signing.pem'` |
111
+ | `transport_key` | The path to the transport key used for mutual TLS. May be an absolute or relative path. `transport_key` or `transport_key_content` must be used to provide the transport key. | `'./conf/transport.key'` |
112
+ | `transport_key_content` | The transport key content (string) used for mutual TLS. If supplied, will override the key data supplied via `transport_key`. | `'-----BEGIN PRIVATE KEY----- MIIFnTCCBIWgAwIBAgIUKl2OAbHVc1r9isRs6WIExS/1BLgwDQYJKoZIhvcNAQEL...'` |
113
+ | `transport_pem` | The path to the transport certificate used for mutual TLS. May be an absolute or relative path. `tranport_pem` or `transport_pem_content` must be used to provide the transport certificate | `'./conf/transport.pem'` |
114
+ | `transport_pem_content` | The transport certificate content (string) used for mutual TLS. If supplied, will override the certificate supplied via `transport_pem`. | `'-----BEGIN CERTIFICATE----- MIIFnTCCBIWgAwIBAgIUKl2OAbHVc1r9isRs6WIExS/1BLgwDQYJKoZIhvcNAQEL...'` |
115
+ | `application_redirect_uri` | The specific redirect url used for all requests from this rp-nodejs-sdk instance. Must be one of the redirect_urls specified in the registry for the client | `'https://tpp.localhost/cb'` |
116
+ | `client_id` | Identifies the client. This value is available from the Registry via Software Statements -> Client Details -> Client ID | `'https://rp.directory.sandbox.connectid.com.au/openid_relying_party/280518db-9807-4824-b080-324d94b45f6a'` |
117
+ | `log_level` | The log level to use for console logs, eg: 'info', 'debug'. Enabling 'debug' will cause all requests and responses to remote servers to be logged. 'debug' must not be used in Production as it will log Personal Information. | `'info'` |
118
+ | `enable_auto_compliance_verification` | When running the OIDC FAPI compliance suite, it requires a call to userInfo after successfully decoding the response claims. If this is set to true, the SDK will automatically make the required call. | `false` |
119
+ | `purpose` | The default purpose to be displayed to the consumer on the IDP consent screen to indicate why their data is being requested to be shared | `'verifying your identity'` |
120
+ | `include_uncertified_participants` | By default the SDK will filter out all authorisation servers that are not fully certified. If you wish to test one of the uncertified auth servers you will need to set this to `true`. If not provided, defaults to 'false' | `false` |
121
+ | `required_claims` | The list of claims that the RP will be using and requires IDPs to support. If supplied, this will be used to filter the list of IDPs returned from `getParticipants` so that only IDPs supporting the claims are returned. If this value is not supplied, no filtering by claim support will be performed. | `['name', 'address']` |
122
+ | `required_participant_certifications` | The list of required certifications a server must support for the IDP use case (eg: TDIF Certification). If supplied, this will be used to filter the list of IDPs returned from `getParticipants` so that only IDPs with the certification are returned. If this value is not supplied, no filtering for specific certifications will be performed. | `[{ profileType: 'TDIF Accreditation', profileVariant: 'Identity Provider'}]` |
145
123
 
146
124
  # Process Overview Sequence Diagram
147
125
 
@@ -149,21 +127,21 @@ The expected interactions between the Relying Party and RP Connector as part of
149
127
 
150
128
  The key steps are:
151
129
 
152
- * Retrieve the list of Participants so the user can be prompted to choose their bank
153
- * Send a pushed authorisation request to the selected bank with the requested claims and redirect the user to their bank
154
- * Use the callback querystring to retrieve the access token and identity token with the claims the user has consented to share
130
+ - Retrieve the list of Participants so the user can be prompted to choose their bank
131
+ - Send a pushed authorisation request to the selected bank with the requested claims and redirect the user to their bank
132
+ - Use the callback querystring to retrieve the access token and identity token with the claims the user has consented to share
155
133
 
156
134
  ```mermaid
157
135
  sequenceDiagram
158
136
  Customer->>+Relying Party: Use Digital ID
159
137
  Relying Party->>+rp-nodejs-sdk: getParticipants()
160
138
  rp-nodejs-sdk-->>-Relying Party: Participant metadata
161
- Relying Party-->>-Customer: Display Bank Selector
139
+ Relying Party-->>-Customer: Display Bank Selector
162
140
  Customer->>+Relying Party: Select Bank
163
141
  Relying Party->>+rp-nodejs-sdk: sendPushedAuthorisationRequest()
164
142
  rp-nodejs-sdk-->>-Relying Party: authUrl, codeVerifier, state, nonce
165
143
  Note right of Relying Party: The RP must associate the codeVerifier,<br/>state and nonce with the user<br/>to use when retrieving claims
166
- Relying Party-->>-Customer: redirect to Bank using authUrl
144
+ Relying Party-->>-Customer: redirect to Bank using authUrl
167
145
  Customer->>+Bank: redirect to AuthUrl
168
146
  Bank->>Bank: Authenticate & Capture Consent
169
147
  Bank-->>-Customer: Redirect customer to RP callback URI
@@ -188,126 +166,126 @@ You may also set the `required_claims` and `required_participant_certifications`
188
166
  based on the needs of your use case (eg: if you require IDPs to be TDIF certified).
189
167
 
190
168
  ```javascript
191
- const idps = await rpClient.getParticipants();
169
+ const idps = await rpClient.getParticipants()
192
170
  ```
193
171
 
194
172
  The response will contain an array of Organisations and their Authorisation Server, with an object structure similar to below.
195
173
 
196
174
  They key fields of interest are:
197
175
 
198
- * `CustomerFriendlyName` - this is the name of the Bank to display to the customer
199
- * `CustomerFriendlyLogoUri` - this is a logo for the Bank that can be displayed alongside the bank name
200
- * `AuthorisationServerId` - this uniquely identifies the authorisation server. It will be needed as part of the next call
201
- in the flow to identify the Authorisation Server to send the PAR to.
176
+ - `CustomerFriendlyName` - this is the name of the Bank to display to the customer
177
+ - `CustomerFriendlyLogoUri` - this is a logo for the Bank that can be displayed alongside the bank name
178
+ - `AuthorisationServerId` - this uniquely identifies the authorisation server. It will be needed as part of the next call
179
+ in the flow to identify the Authorisation Server to send the PAR to.
202
180
 
203
181
  Note that in the response there may be:
204
182
 
205
- * multiple organisations - each Bank will be its own organisation
206
- * multiple authorisation servers per bank - a Bank may have different authorisation servers for its different brands (or potentially
207
- to differentiate Business Banking from Retail Banking)
183
+ - multiple organisations - each Bank will be its own organisation
184
+ - multiple authorisation servers per bank - a Bank may have different authorisation servers for its different brands (or potentially
185
+ to differentiate Business Banking from Retail Banking)
208
186
 
209
187
  ```json
210
- [
188
+ [
189
+ {
190
+ "Status": "Active",
191
+ "OrgDomainRoleClaims": [],
192
+ "AuthorisationServers": [
211
193
  {
212
- "Status": "Active",
213
- "OrgDomainRoleClaims": [],
214
- "AuthorisationServers": [
215
- {
216
- "PayloadSigningCertLocationUri": "https://auth.bank4.directory.sandbox.connectid.com.au/na",
217
- "ParentAuthorisationServerId": null,
218
- "OpenIDDiscoveryDocument": "https://auth.bank4.directory.sandbox.connectid.com.au/.well-known/openid-configuration",
219
- "CustomerFriendlyName": "Bank W",
220
- "CustomerFriendlyDescription": "Bank4",
221
- "TermsOfServiceUri": null,
222
- "ApiResources": [],
223
- "AutoRegistrationSupported": true,
224
- "CustomerFriendlyLogoUri": "https://static.relyingparty.net/BankW.svg",
225
- "SupportsDCR": false,
226
- "AuthorisationServerCertifications": [],
227
- "SupportsCiba": false,
228
- "DeveloperPortalUri": null,
229
- "NotificationWebhookAddedDate": null,
230
- "AuthorisationServerId": "cde44c30-9138-4b58-ba50-221833d14319"
231
- },
232
- {
233
- "PayloadSigningCertLocationUri": "https://auth.bank3.directory.sandbox.connectid.com.au/na",
234
- "ParentAuthorisationServerId": null,
235
- "OpenIDDiscoveryDocument": "https://auth.bank3.directory.sandbox.connectid.com.au/.well-known/openid-configuration",
236
- "CustomerFriendlyName": "Bank N",
237
- "CustomerFriendlyDescription": "Bank3",
238
- "TermsOfServiceUri": null,
239
- "ApiResources": [],
240
- "AutoRegistrationSupported": true,
241
- "CustomerFriendlyLogoUri": "https://static.relyingparty.net/BankN.svg",
242
- "SupportsDCR": false,
243
- "AuthorisationServerCertifications": [],
244
- "SupportsCiba": false,
245
- "DeveloperPortalUri": null,
246
- "NotificationWebhookAddedDate": null,
247
- "AuthorisationServerId": "22c2d67e-4d95-414a-b51a-ca863e9d691d"
248
- }
249
- ],
250
- "OrgDomainClaims": [],
251
- "Size": null,
252
- "RegistrationId": null,
253
- "OrganisationId": "ed63c5b4-4dcb-4867-bd8b-e2b04a0ab04b",
254
- "City": "Banksville",
255
- "Postcode": "4103",
256
- "AddressLine2": "Bank Town",
257
- "RegisteredName": "RefBank",
258
- "AddressLine1": "1 Reference Bank Street",
259
- "LegalEntityName": "Reference Bank",
260
- "OrganisationName": "Reference Banks",
261
- "Country": "AU",
262
- "RegistrationNumber": "ABN 123 456 7890",
263
- "CreatedOn": "2021-12-14T23:09:03.581Z",
264
- "Tag": null,
265
- "ParentOrganisationReference": "",
266
- "CompanyRegister": "ABN",
267
- "CountryOfRegistration": "AU"
194
+ "PayloadSigningCertLocationUri": "https://auth.bank4.directory.sandbox.connectid.com.au/na",
195
+ "ParentAuthorisationServerId": null,
196
+ "OpenIDDiscoveryDocument": "https://auth.bank4.directory.sandbox.connectid.com.au/.well-known/openid-configuration",
197
+ "CustomerFriendlyName": "Bank W",
198
+ "CustomerFriendlyDescription": "Bank4",
199
+ "TermsOfServiceUri": null,
200
+ "ApiResources": [],
201
+ "AutoRegistrationSupported": true,
202
+ "CustomerFriendlyLogoUri": "https://static.relyingparty.net/BankW.svg",
203
+ "SupportsDCR": false,
204
+ "AuthorisationServerCertifications": [],
205
+ "SupportsCiba": false,
206
+ "DeveloperPortalUri": null,
207
+ "NotificationWebhookAddedDate": null,
208
+ "AuthorisationServerId": "cde44c30-9138-4b58-ba50-221833d14319"
268
209
  },
269
210
  {
270
- "Status": "Active",
271
- "OrgDomainRoleClaims": [],
272
- "AuthorisationServers": [
273
- {
274
- "PayloadSigningCertLocationUri": "https://mtls.partner.idp.test.commbank.com.au/pf/JWKS",
275
- "ParentAuthorisationServerId": null,
276
- "OpenIDDiscoveryDocument": "https://mtls.partner.idp.test.commbank.com.au/.well-known/openid-configuration",
277
- "CustomerFriendlyName": "Commonwealth Bank",
278
- "CustomerFriendlyDescription": "Test IDP for CBA",
279
- "TermsOfServiceUri": null,
280
- "ApiResources": [],
281
- "AutoRegistrationSupported": true,
282
- "CustomerFriendlyLogoUri": "https://www.commbank.com.au/test.svg",
283
- "SupportsDCR": false,
284
- "AuthorisationServerCertifications": [],
285
- "SupportsCiba": false,
286
- "DeveloperPortalUri": null,
287
- "NotificationWebhookAddedDate": null,
288
- "AuthorisationServerId": "355df9aa-bf8f-4cec-aa4d-78b10356762e"
289
- }
290
- ],
291
- "OrgDomainClaims": [],
292
- "Size": null,
293
- "RegistrationId": "",
294
- "OrganisationId": "adf2af89-2782-4058-86d9-ff3a9068e4a5",
295
- "City": "Sydney",
296
- "Postcode": "2000",
297
- "AddressLine2": "201 Sussex Street",
298
- "RegisteredName": "Commonwealth Bank of Australia",
299
- "AddressLine1": "Ground Floor Tower 1",
300
- "LegalEntityName": "Commonwealth Bank of Australia",
301
- "OrganisationName": "Commonwealth Bank of Australia",
302
- "Country": "AU",
303
- "RegistrationNumber": "ABN 48 123 123 124",
304
- "CreatedOn": "2022-03-14T00:42:29.202Z",
305
- "Tag": null,
306
- "ParentOrganisationReference": "",
307
- "CompanyRegister": "ABN",
308
- "CountryOfRegistration": "AU"
211
+ "PayloadSigningCertLocationUri": "https://auth.bank3.directory.sandbox.connectid.com.au/na",
212
+ "ParentAuthorisationServerId": null,
213
+ "OpenIDDiscoveryDocument": "https://auth.bank3.directory.sandbox.connectid.com.au/.well-known/openid-configuration",
214
+ "CustomerFriendlyName": "Bank N",
215
+ "CustomerFriendlyDescription": "Bank3",
216
+ "TermsOfServiceUri": null,
217
+ "ApiResources": [],
218
+ "AutoRegistrationSupported": true,
219
+ "CustomerFriendlyLogoUri": "https://static.relyingparty.net/BankN.svg",
220
+ "SupportsDCR": false,
221
+ "AuthorisationServerCertifications": [],
222
+ "SupportsCiba": false,
223
+ "DeveloperPortalUri": null,
224
+ "NotificationWebhookAddedDate": null,
225
+ "AuthorisationServerId": "22c2d67e-4d95-414a-b51a-ca863e9d691d"
309
226
  }
310
- ]
227
+ ],
228
+ "OrgDomainClaims": [],
229
+ "Size": null,
230
+ "RegistrationId": null,
231
+ "OrganisationId": "ed63c5b4-4dcb-4867-bd8b-e2b04a0ab04b",
232
+ "City": "Banksville",
233
+ "Postcode": "4103",
234
+ "AddressLine2": "Bank Town",
235
+ "RegisteredName": "RefBank",
236
+ "AddressLine1": "1 Reference Bank Street",
237
+ "LegalEntityName": "Reference Bank",
238
+ "OrganisationName": "Reference Banks",
239
+ "Country": "AU",
240
+ "RegistrationNumber": "ABN 123 456 7890",
241
+ "CreatedOn": "2021-12-14T23:09:03.581Z",
242
+ "Tag": null,
243
+ "ParentOrganisationReference": "",
244
+ "CompanyRegister": "ABN",
245
+ "CountryOfRegistration": "AU"
246
+ },
247
+ {
248
+ "Status": "Active",
249
+ "OrgDomainRoleClaims": [],
250
+ "AuthorisationServers": [
251
+ {
252
+ "PayloadSigningCertLocationUri": "https://mtls.partner.idp.test.commbank.com.au/pf/JWKS",
253
+ "ParentAuthorisationServerId": null,
254
+ "OpenIDDiscoveryDocument": "https://mtls.partner.idp.test.commbank.com.au/.well-known/openid-configuration",
255
+ "CustomerFriendlyName": "Commonwealth Bank",
256
+ "CustomerFriendlyDescription": "Test IDP for CBA",
257
+ "TermsOfServiceUri": null,
258
+ "ApiResources": [],
259
+ "AutoRegistrationSupported": true,
260
+ "CustomerFriendlyLogoUri": "https://www.commbank.com.au/test.svg",
261
+ "SupportsDCR": false,
262
+ "AuthorisationServerCertifications": [],
263
+ "SupportsCiba": false,
264
+ "DeveloperPortalUri": null,
265
+ "NotificationWebhookAddedDate": null,
266
+ "AuthorisationServerId": "355df9aa-bf8f-4cec-aa4d-78b10356762e"
267
+ }
268
+ ],
269
+ "OrgDomainClaims": [],
270
+ "Size": null,
271
+ "RegistrationId": "",
272
+ "OrganisationId": "adf2af89-2782-4058-86d9-ff3a9068e4a5",
273
+ "City": "Sydney",
274
+ "Postcode": "2000",
275
+ "AddressLine2": "201 Sussex Street",
276
+ "RegisteredName": "Commonwealth Bank of Australia",
277
+ "AddressLine1": "Ground Floor Tower 1",
278
+ "LegalEntityName": "Commonwealth Bank of Australia",
279
+ "OrganisationName": "Commonwealth Bank of Australia",
280
+ "Country": "AU",
281
+ "RegistrationNumber": "ABN 48 123 123 124",
282
+ "CreatedOn": "2022-03-14T00:42:29.202Z",
283
+ "Tag": null,
284
+ "ParentOrganisationReference": "",
285
+ "CompanyRegister": "ABN",
286
+ "CountryOfRegistration": "AU"
287
+ }
288
+ ]
311
289
  ```
312
290
 
313
291
  ## getFallbackProviderParticipants()
@@ -323,13 +301,12 @@ Note that there is only expected to be a single Fallback Provider for the scheme
323
301
  auth server should be returned here).
324
302
 
325
303
  ```javascript
326
- const fallbackProviders = await rpClient.getFallbackProviderParticipants();
304
+ const fallbackProviders = await rpClient.getFallbackProviderParticipants()
327
305
  ```
328
306
 
329
307
  The response will contain an array of Organisations and their Authorisation Servers, with the structure the same
330
308
  as that for `getParticipants()`.
331
309
 
332
-
333
310
  ## sendPushedAuthorisationRequest(authServerId: string, essentialClaims: string[], voluntaryClaims: string[] = [], purpose: string = '{default value from config}')
334
311
 
335
312
  This sends a Pushed Authorisation Request to the specified Identity Server requesting the list of supplied claims. The response
@@ -338,24 +315,24 @@ process.
338
315
 
339
316
  The required function parameters are:
340
317
 
341
- * `authorisationServerId` - identifies the authorisation server to send the PAR to
342
- * `essentialClaims` - a list of the identity essential claim names that being requested for the user.
343
- Note that permitted claim names are defined in section 6 of the [Digital ID API Security Profile](https://docs.sandbox.connectid.com.au/docs/network-documentation/technical-specifications/) specification.
344
- When the IDP is obtaining user consent, the only method for a user to opt out of consenting to an `essential` claim is to cancel the entire transaction.
345
- * `voluntaryClaims` - a list of the identity voluntary claim names that are being requested for the user.
346
- Note that permitted claim names are defined in section 6 of the [Digital ID API Security Profile](https://docs.sandbox.connectid.com.au/docs/network-documentation/technical-specifications/) specification.
347
- When the IDP is obtaining user consent, they may allow the user to opt out of consenting to providing each of the `voluntary` claims, while still consenting to all `essential` claims.
348
- If a user does not consent to `voluntary` claims, but does consent to `essential` claims, this will result in a successful transaction.
349
- * `purpose` - the purpose to be displayed to the consumer on the IDP consent screen to indicate why their data is being requested to be shared. If not supplied, the default purpose configured in the SDK config will be used.
350
-
351
- The method will return: `{ authUrl, code_verifier, state, nonce, xFapiInteractionId }`. The fields are:
352
-
353
- * `authUrl` - the URL the user must be redirected to in order to complete the authorisation process with their Identity Provider
354
- * `codeVerifier`
355
- * `state`
356
- * `nonce`
357
- * `xFapiInteractionId` - a unique identifier for this interaction with the Authorisation Server, that was sent in the `x-fapi-interaction-id` request
358
- header to the server. Intended as a correlation id for diagnosing issues between the client and the authorisation server.
318
+ - `authorisationServerId` - identifies the authorisation server to send the PAR to
319
+ - `essentialClaims` - a list of the identity essential claim names that being requested for the user.
320
+ Note that permitted claim names are defined in section 6 of the [Digital ID API Security Profile](https://docs.sandbox.connectid.com.au/docs/network-documentation/technical-specifications/) specification.
321
+ When the IDP is obtaining user consent, the only method for a user to opt out of consenting to an `essential` claim is to cancel the entire transaction.
322
+ - `voluntaryClaims` - a list of the identity voluntary claim names that are being requested for the user.
323
+ Note that permitted claim names are defined in section 6 of the [Digital ID API Security Profile](https://docs.sandbox.connectid.com.au/docs/network-documentation/technical-specifications/) specification.
324
+ When the IDP is obtaining user consent, they may allow the user to opt out of consenting to providing each of the `voluntary` claims, while still consenting to all `essential` claims.
325
+ If a user does not consent to `voluntary` claims, but does consent to `essential` claims, this will result in a successful transaction.
326
+ - `purpose` - the purpose to be displayed to the consumer on the IDP consent screen to indicate why their data is being requested to be shared. If not supplied, the default purpose configured in the SDK config will be used.
327
+
328
+ The method will return: `{ authUrl, codeVerifier, state, nonce, xFapiInteractionId }`. The fields are:
329
+
330
+ - `authUrl` - the URL the user must be redirected to in order to complete the authorisation process with their Identity Provider
331
+ - `codeVerifier`
332
+ - `state`
333
+ - `nonce`
334
+ - `xFapiInteractionId` - a unique identifier for this interaction with the Authorisation Server, that was sent in the `x-fapi-interaction-id` request
335
+ header to the server. Intended as a correlation id for diagnosing issues between the client and the authorisation server.
359
336
 
360
337
  The `codeVerifier`, `state` and `nonce` are all associated with this specific PAR and are required when retrieving the
361
338
  token claims when the user has authorised the request. You must securely associate these with your user request
@@ -365,19 +342,19 @@ so that you can use them on the subsequent call.
365
342
 
366
343
  ```typescript
367
344
  interface CallbackParamsType {
368
- access_token?: string;
369
- code?: string;
370
- error?: string;
371
- error_description?: string;
372
- error_uri?: string;
373
- expires_in?: string;
374
- id_token?: string;
375
- state?: string;
376
- token_type?: string;
377
- session_state?: string;
378
- response?: string;
379
-
380
- [key: string]: unknown;
345
+ access_token?: string
346
+ code?: string
347
+ error?: string
348
+ error_description?: string
349
+ error_uri?: string
350
+ expires_in?: string
351
+ id_token?: string
352
+ state?: string
353
+ token_type?: string
354
+ session_state?: string
355
+ response?: string
356
+
357
+ [key: string]: unknown
381
358
  }
382
359
  ```
383
360
 
@@ -387,15 +364,14 @@ identity token with the claims. The tokens are then returned to the API caller.
387
364
 
388
365
  The required function parameters are:
389
366
 
390
- * `authorisationServerId` - identifies the authorisation server providing the user information
391
- * `requestParams` - the full querystring from the callback to the Relying Party callback address
392
- * `codeVerifier` - from the response to the PAR for this identity request
393
- * `state` - from the response to the PAR for this identity request
394
- * `nonce` - from the response to the PAR for this identity request
367
+ - `authorisationServerId` - identifies the authorisation server providing the user information
368
+ - `requestParams` - the full querystring from the callback to the Relying Party callback address
369
+ - `codeVerifier` - from the response to the PAR for this identity request
370
+ - `state` - from the response to the PAR for this identity request
371
+ - `nonce` - from the response to the PAR for this identity request
395
372
 
396
- The method will return a `ConsolidatedTokenSet` which extends [Tokenset](https://github.com/panva/node-openid-client/blob/main/docs/README.md#class-tokenset)
397
- that contains the access_token and id_token. The user identity claims can be retrieved using the utility method `claims()`
398
- on the TokenSet. The `ConsolidatedTokenSet` provides a new method `consolidatedClaims()`, which will return a single
373
+ The method will return a `ConsolidatedTokenSet` that contains the access_token and id_token. The user identity claims can be retrieved using the utility method `claims()`
374
+ on the ConsolidatedTokenSet. The `ConsolidatedTokenSet` provides a method `consolidatedClaims()`, which will return a single
399
375
  object containing all the claims, including the extended claims, as a single object. The tokenset also contains an `xFapiInteractionId` which
400
376
  is a correlation id for the request that was sent to the IDP.
401
377
 
@@ -408,36 +384,68 @@ All user identity claims will be provided as part of the `id_token` returned by
408
384
 
409
385
  The required function parameters are:
410
386
 
411
- * `authorisationServerId` - identifies the authorisation server providing the user information
412
- * `accessToken` - the access token provided by `retrieveTokens`
387
+ - `authorisationServerId` - identifies the authorisation server providing the user information
388
+ - `accessToken` - the access token provided by `retrieveTokens`
413
389
 
414
390
  # Release Notes
415
391
 
392
+ ### 5.0.0 (Dec 21, 2025)
393
+
394
+ **Major architectural refactoring - Breaking Changes**
395
+
396
+ This release removes the dependency on `openid-client` and implements custom OIDC/FAPI flow logic to align with the Java and .NET SDKs.
397
+
398
+ **Breaking Changes:**
399
+ - **Removed `cache_ttl` configuration parameter**: Participant list caching has been removed to align with Java/.NET SDKs.
400
+ - **Internal architecture changes**: The SDK now uses a modular endpoint-based architecture with separate classes for each OIDC operation (PAR, token retrieval, userinfo, etc.).
401
+ - **Configuration changes**: The `client_id` parameter is no longer part of the `client` config, but moved up 1 level.
402
+ - **Configuration changes**: The configuration block for `client` with it's associated parameters is no longer required and has been removed. Please review the `config.ts` for the correct structure and update your configuration accordingly.
403
+
404
+ **Internal Improvements:**
405
+ - Replaced `openid-client` dependency with custom implementation using `jose` library for JWT operations
406
+ - Implemented custom HTTP client with mTLS support
407
+
408
+ **Note:** The public API remains mostly unchanged - all existing public methods maintain the same signatures and behavior, but some of the return types may have become stricter.
409
+ Note that the field `codeVerifier` has been renamed from `code_verifier` to `codeVerifier` to be more in line with TypeScript naming conventions.
410
+
411
+ ### 4.2.1 (Nov 27, 2025)
412
+
413
+ - Updated dependencies.
414
+
416
415
  ### 4.2.0 (Aug 8, 2025)
416
+
417
417
  - `cba_loyalty` claim.
418
418
 
419
419
  ### 4.1.0 (Feb 25, 2025)
420
+
420
421
  - Implemented user-agent support.
421
422
 
422
423
  ### 4.0.5 (Feb 24, 2025)
423
- - Add README.md and license files to bundle.
424
+
425
+ - Add README.md and licence files to bundle.
424
426
 
425
427
  ### 4.0.4 (Feb 21, 2025)
428
+
426
429
  - Remove `declarationMap`.
427
430
 
428
431
  ### 4.0.3 (Nov 29, 2024)
432
+
429
433
  - Issuer value for aud in private_key_jwt.
430
434
 
431
435
  ### 4.0.2 (Oct 22, 2024)
436
+
432
437
  - Single string audience in the private key jwt.
433
438
 
434
439
  ### 4.0.1 (Oct 1, 2024)
440
+
435
441
  - Changed type of `ApiResources` from `str` to `ApiResource`.
436
442
 
437
443
  ### 4.0.0 (Sep 2, 2024)
444
+
438
445
  - Breaking change: removed essential claims default value. If you are relying on essential claims default value calling `sendPushedAuthorisationRequest` then you need to provide the claims explicitly. Otherwise, no need to change anything.
439
446
 
440
447
  How it was:
448
+
441
449
  ```typescript
442
450
  const defaultClaimList: string[] = ['given_name', 'middle_name', 'family_name', 'phone_number', 'email', 'address', 'birthdate', 'txn']
443
451
 
@@ -445,37 +453,47 @@ async sendPushedAuthorisationRequest(authServerId: string, essentialClaims: stri
445
453
  ```
446
454
 
447
455
  How it is now:
456
+
448
457
  ```typescript
449
458
  async sendPushedAuthorisationRequest(authServerId: string, essentialClaims: string[], voluntaryClaims: string[] = [], purpose: string = this.purpose) {
450
459
  ```
451
460
 
452
461
  ### 4.0.0 (Sep 23, 2024)
453
- - Updated Node version to 20.x.
454
- - Removed jest and axios dependencies.
462
+
463
+ - Updated Node.js version to 20.x.
464
+ - Removed jest and axios dependencies.
455
465
 
456
466
  ### 3.0.0 (Aug 27, 2024)
467
+
457
468
  - Breaking change: removed `name` from essential claims default value. If you are relying on essential claims default value calling `sendPushedAuthorisationRequest` and use `name` claim then you need to provide `name` claim explicitly. Otherwise, no need to change anything.
458
469
 
459
470
  ### 2.15.0 (Jun 20, 2024)
471
+
460
472
  - Updated purpose statement.
461
473
  - Dependencies updated.
462
474
 
463
475
  ### 2.14.1 (Jun 17, 2024)
476
+
464
477
  - Removed `got` dependency and used `fetch` instead.
465
478
 
466
479
  ### 2.14.0 (Jun 12, 2024)
467
- - Added cache to `getParticipants()` method.
480
+
481
+ - Added cache to `getParticipants()` method.
468
482
 
469
483
  ### 2.13.0 (April 17, 2024)
484
+
470
485
  - Updated dependencies
471
486
 
472
487
  ### 2.12.3 (Nov 8, 2023)
488
+
473
489
  - `nonce` should have 43 chars.
474
490
 
475
491
  ### 2.12.2 (Nov 8, 2023)
492
+
476
493
  - Updated README.md to include `tsconfig` suggestion.
477
494
 
478
495
  ### 2.12.1 (Nov 7, 2023)
496
+
479
497
  - Made `ca_pem` optional. Although either `ca_pem` or `ca_pem_content` must be provided.
480
498
  - Made `signing_key` optional. Although either `signing_key` or `signing_key_content` must be provided.
481
499
  - Made `signing_pem` optional. Although either `signing_pem` or `signing_pem_content` must be provided.
@@ -483,97 +501,126 @@ async sendPushedAuthorisationRequest(authServerId: string, essentialClaims: stri
483
501
  - Made `transport_pem` optional. Although either `transport_pem` or `transport_pem_content` must be provided.
484
502
 
485
503
  ### 2.12.0 (October 19, 2023)
486
- - Added support to Node 18.
504
+
505
+ - Added support to Node.js 18.
487
506
 
488
507
  ### 2.11.2 (August 22, 2023)
508
+
489
509
  - Conformance test succeed on warnings.
490
510
 
491
511
  ### 2.11.1 (August 3, 2023)
512
+
492
513
  - Added automated Conformance test.
493
514
 
494
515
  ### 2.11.0 (August 1, 2023)
516
+
495
517
  - Updated trust_framework in the PAR to contain an object `{ value: 'au_connectid' }` instead of having a string value. This
496
- is to bring it inline with OIDC4A spec that requires trust_framework to contain an object.
518
+ is to bring it inline with OIDC4A spec that requires trust_framework to contain an object.
497
519
 
498
520
  ### 2.10.0 (July 31, 2023)
521
+
499
522
  - Updated documentation to include `registry_participants_uri` parameter.
500
523
  - Updated two testcases.
501
524
 
502
525
  ### 2.9.0 (July 17, 2023)
526
+
503
527
  - Updated `getParticipants()` so it only returns participants that are active in the network by default. Can be
504
- overridden using config to return all if required. Also allow filtering of Auth Servers by capabilities.
528
+ overridden using config to return all if required. Also allow filtering of Auth Servers by capabilities.
505
529
  - Added `getFallbackProviderParticipants()` to return the manual verification authorisation server.
506
530
  - Note that `sendPushedAuthorisationRequest()` will require the auth server id to be valid for the current filter config (eg: Active auth servers).
507
531
 
508
532
  ### 2.8.0 (June 7, 2023)
533
+
509
534
  - Ensured that the `txn` claim is always requested so clients always have a reference for the transaction.
510
535
 
511
536
  ### 2.7.2 (June 6, 2023)
537
+
512
538
  - Removed `redirect_url` and `response_type` authorization request parameters from the request to the authorization endpoint to comply with FAPI2 Security Profile Implementers Draft 3.
513
539
 
514
540
  ### 2.7.1 (June 5, 2023)
541
+
515
542
  - Removed `scope` authorization request parameter from the request to the authorization endpoint to comply with FAPI2 Security Profile Implementers Draft 3.
516
543
 
517
544
  ### 2.7.0 (May 31, 2023)
545
+
518
546
  - Enhanced logging so x-fapi-interaction-id logged for PAR and token requests.
519
547
 
520
548
  ### 2.6.1 (May 29, 2023)
549
+
521
550
  - Fixed invalid main file definition.
522
551
 
523
552
  ### 2.6.0 (May 29, 2023)
553
+
524
554
  - Added support for `purpose` as request object parameter on PAR requests. Can be supplied per request or use the default supplied via config.
525
555
 
526
556
  ### 2.5.0 (May 24, 2023)
557
+
527
558
  - Added support for `x-fapi-interaction-id` headers on PAR, token and userinfo requests.
528
559
 
529
560
  ### 2.4.1 (May 5, 2023)
561
+
530
562
  - Updated clientId details for testing and documentation to use a federated clientId.
531
563
 
532
564
  ### 2.4.0 (March 28, 2023)
565
+
533
566
  - Reimplemented extended claims, which now supports the following claims: `over16`, `over18`, `over21`, `over25`, `over65`, `beneficiary_account_au`, `beneficiary_account_au_payid`, `beneficiary_account_international`.
534
567
  - Implemented strict mode for TypeScript to prevent the use of `any` type and other unsafe types.
535
568
  - Fix for `ClaimsRequest` type to support non-verified claims in the type definition.
536
569
 
537
570
  ### 2.3.0 (March 10, 2023)
571
+
538
572
  - Added support for the following extended claims: `over16`, `over18`, `over21`, `over25`, `over65`, `beneficiary_account`, `pay_id`.
539
573
 
540
574
  ### 2.2.0 (Feb 20, 2023)
575
+
541
576
  - Maintenance update of dependencies to address CVE-2022-36083 in JOSE library.
542
577
 
543
578
  ### 2.1.0 (Feb 13, 2023)
579
+
544
580
  - Moved `prompt=consent` parameter to pushed authorisation request object instead of a URL parameter.
545
581
 
546
582
  ### 2.0.7 (Dec 22, 2022)
547
- - Run on Node 14 and 16 (openid-client lib does not support Node 18 yet).
548
-
583
+
584
+ - Run on Node.js 14 and 16 (openid-client lib does not support Node.js 18 yet).
585
+
549
586
  ### 2.0.6 (Dec 21, 2022)
587
+
550
588
  - Removed the need to use `--experimental-specifier-resolution=node` flag when importing the SDK.
551
589
  - Log SDK version.
552
-
590
+
553
591
  ### 2.0.5 (Dec 20, 2022)
592
+
554
593
  - Updated documentation.
555
594
 
556
595
  ### 2.0.4 (Dec 20, 2022)
596
+
557
597
  - Fixed `RelyingPartyClientSdk is not a constructor`.
558
598
 
559
599
  ### 2.0.3 (Dec 20, 2022)
600
+
560
601
  - Made `ca_pem_content, signing_key_content, signing_pem_content, transport_key_content, transport_pem_content` from `RelyingPartyClientSdkConfig` optional.
561
602
 
562
603
  ### 2.0.2 (Dec 20, 2022)
604
+
563
605
  - Removed version logging when SDK is created.
564
606
 
565
607
  ### 2.0.1 (Dec 20, 2022)
608
+
566
609
  - Fixed npm publish.
567
610
 
568
611
  ### 2.0.0 (Dec 19, 2022)
569
- - Typescript support.
612
+
613
+ - TypeScript support.
570
614
  - Breaking change: SDK imported using `require` will need to add a `default` at the end of the import.
615
+
571
616
  ```javascript
572
617
  const RelyingPartyClientSdk = require('@idmvp/rp-nodejs-sdk').default
573
618
  ```
574
-
619
+
575
620
  ### 1.2.3 (Oct 24, 2022)
621
+
576
622
  - Code formatting. See `.prettierrc.json`.
577
623
 
578
624
  ### 1.2.2
625
+
579
626
  \<starting point\>