@tsg-dsp/tsg-sdk 0.0.0-stage → 0.20.1
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/LICENSE +201 -0
- package/README.md +273 -2
- package/dist/.generated/control-plane.d.ts +7882 -0
- package/dist/.generated/sso-bridge.d.ts +3062 -0
- package/dist/.generated/wallet.d.ts +6350 -0
- package/dist/auth/auth.provider.d.ts +45 -0
- package/dist/auth/auth.provider.d.ts.map +1 -0
- package/dist/auth/auth.provider.js +158 -0
- package/dist/auth/auth.provider.js.map +1 -0
- package/dist/auth/auth.types.d.ts +27 -0
- package/dist/auth/auth.types.d.ts.map +1 -0
- package/dist/auth/auth.types.js +2 -0
- package/dist/auth/auth.types.js.map +1 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/browser.d.ts +1243 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +215 -0
- package/dist/browser.js.map +1 -0
- package/dist/catalog/catalog.sdk.d.ts +149 -0
- package/dist/catalog/catalog.sdk.d.ts.map +1 -0
- package/dist/catalog/catalog.sdk.js +155 -0
- package/dist/catalog/catalog.sdk.js.map +1 -0
- package/dist/catalog/index.d.ts +2 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +2 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/client.d.ts +43 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +107 -0
- package/dist/client.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/sdk.config.d.ts +81 -0
- package/dist/config/sdk.config.d.ts.map +1 -0
- package/dist/config/sdk.config.js +2 -0
- package/dist/config/sdk.config.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata/index.d.ts +2 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +2 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/metadata.sdk.d.ts +111 -0
- package/dist/metadata/metadata.sdk.d.ts.map +1 -0
- package/dist/metadata/metadata.sdk.js +142 -0
- package/dist/metadata/metadata.sdk.js.map +1 -0
- package/dist/negotiations/index.d.ts +2 -0
- package/dist/negotiations/index.d.ts.map +1 -0
- package/dist/negotiations/index.js +2 -0
- package/dist/negotiations/index.js.map +1 -0
- package/dist/negotiations/negotiations.sdk.d.ts +113 -0
- package/dist/negotiations/negotiations.sdk.d.ts.map +1 -0
- package/dist/negotiations/negotiations.sdk.js +146 -0
- package/dist/negotiations/negotiations.sdk.js.map +1 -0
- package/dist/requirements/index.d.ts +2 -0
- package/dist/requirements/index.d.ts.map +1 -0
- package/dist/requirements/index.js +2 -0
- package/dist/requirements/index.js.map +1 -0
- package/dist/requirements/requirements.sdk.d.ts +52 -0
- package/dist/requirements/requirements.sdk.d.ts.map +1 -0
- package/dist/requirements/requirements.sdk.js +123 -0
- package/dist/requirements/requirements.sdk.js.map +1 -0
- package/dist/sso/index.d.ts +3 -0
- package/dist/sso/index.d.ts.map +1 -0
- package/dist/sso/index.js +3 -0
- package/dist/sso/index.js.map +1 -0
- package/dist/sso/sso-management.sdk.d.ts +96 -0
- package/dist/sso/sso-management.sdk.d.ts.map +1 -0
- package/dist/sso/sso-management.sdk.js +152 -0
- package/dist/sso/sso-management.sdk.js.map +1 -0
- package/dist/sso/sso.sdk.d.ts +75 -0
- package/dist/sso/sso.sdk.d.ts.map +1 -0
- package/dist/sso/sso.sdk.js +147 -0
- package/dist/sso/sso.sdk.js.map +1 -0
- package/dist/transfers/index.d.ts +2 -0
- package/dist/transfers/index.d.ts.map +1 -0
- package/dist/transfers/index.js +2 -0
- package/dist/transfers/index.js.map +1 -0
- package/dist/transfers/transfers.sdk.d.ts +155 -0
- package/dist/transfers/transfers.sdk.d.ts.map +1 -0
- package/dist/transfers/transfers.sdk.js +186 -0
- package/dist/transfers/transfers.sdk.js.map +1 -0
- package/dist/tsg-sdk.d.ts +65 -0
- package/dist/tsg-sdk.d.ts.map +1 -0
- package/dist/tsg-sdk.js +128 -0
- package/dist/tsg-sdk.js.map +1 -0
- package/dist/utils/errors.d.ts +67 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +79 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/polling.d.ts +20 -0
- package/dist/utils/polling.d.ts.map +1 -0
- package/dist/utils/polling.js +35 -0
- package/dist/utils/polling.js.map +1 -0
- package/dist/utils/shape-validation.d.ts +59 -0
- package/dist/utils/shape-validation.d.ts.map +1 -0
- package/dist/utils/shape-validation.js +85 -0
- package/dist/utils/shape-validation.js.map +1 -0
- package/dist/utils/validate.d.ts +47 -0
- package/dist/utils/validate.d.ts.map +1 -0
- package/dist/utils/validate.js +68 -0
- package/dist/utils/validate.js.map +1 -0
- package/dist/vendor/common-dtos/abac.policy.d.ts +60 -0
- package/dist/vendor/common-dtos/abac.policy.js +2 -0
- package/dist/vendor/common-dtos/audit.types.d.ts +74 -0
- package/dist/vendor/common-dtos/audit.types.js +9 -0
- package/dist/vendor/common-dtos/credential-requirements.d.ts +19 -0
- package/dist/vendor/common-dtos/credential-requirements.dto.d.ts +47 -0
- package/dist/vendor/common-dtos/credential-requirements.dto.js +251 -0
- package/dist/vendor/common-dtos/credential-requirements.js +181 -0
- package/dist/vendor/common-dtos/dataplane.dto.d.ts +6 -0
- package/dist/vendor/common-dtos/dataplane.dto.js +29 -0
- package/dist/vendor/common-dtos/dcp.dto.d.ts +90 -0
- package/dist/vendor/common-dtos/dcp.dto.js +490 -0
- package/dist/vendor/common-dtos/dcql.dto.d.ts +89 -0
- package/dist/vendor/common-dtos/dcql.dto.js +450 -0
- package/dist/vendor/common-dtos/did.schemas.d.ts +40 -0
- package/dist/vendor/common-dtos/did.schemas.js +260 -0
- package/dist/vendor/common-dtos/index.d.ts +19 -0
- package/dist/vendor/common-dtos/index.js +19 -0
- package/dist/vendor/common-dtos/metadata.dto.d.ts +6 -0
- package/dist/vendor/common-dtos/metadata.dto.js +30 -0
- package/dist/vendor/common-dtos/negotiations.dto.d.ts +29 -0
- package/dist/vendor/common-dtos/negotiations.dto.js +205 -0
- package/dist/vendor/common-dtos/permissions.d.ts +237 -0
- package/dist/vendor/common-dtos/permissions.js +337 -0
- package/dist/vendor/common-dtos/presentation.request.dto.d.ts +9 -0
- package/dist/vendor/common-dtos/presentation.request.dto.js +55 -0
- package/dist/vendor/common-dtos/presentation.status.dto.d.ts +13 -0
- package/dist/vendor/common-dtos/presentation.status.dto.js +83 -0
- package/dist/vendor/common-dtos/presentationdefinition.dto.d.ts +75 -0
- package/dist/vendor/common-dtos/presentationdefinition.dto.js +448 -0
- package/dist/vendor/common-dtos/signatures.dto.d.ts +32 -0
- package/dist/vendor/common-dtos/signatures.dto.js +210 -0
- package/dist/vendor/common-dtos/transfer.dto.d.ts +17 -0
- package/dist/vendor/common-dtos/transfer.dto.js +102 -0
- package/dist/vendor/common-dtos/utils.swagger.d.ts +13 -0
- package/dist/vendor/common-dtos/utils.swagger.js +63 -0
- package/dist/vendor/control-plane-dtos/index.d.ts +5 -0
- package/dist/vendor/control-plane-dtos/index.js +5 -0
- package/dist/vendor/control-plane-dtos/registry/registry.dto.d.ts +5 -0
- package/dist/vendor/control-plane-dtos/registry/registry.dto.js +26 -0
- package/dist/vendor/control-plane-dtos/registry/registry.search.dto.d.ts +29 -0
- package/dist/vendor/control-plane-dtos/registry/registry.search.dto.js +127 -0
- package/dist/vendor/control-plane-dtos/ssi/verifiablePresentations.dto.d.ts +10 -0
- package/dist/vendor/control-plane-dtos/ssi/verifiablePresentations.dto.js +44 -0
- package/dist/vendor/control-plane-dtos/status/status.dto.d.ts +38 -0
- package/dist/vendor/control-plane-dtos/status/status.dto.js +173 -0
- package/dist/vendor/sso-bridge-dtos/clients.dto.d.ts +22 -0
- package/dist/vendor/sso-bridge-dtos/clients.dto.js +113 -0
- package/dist/vendor/sso-bridge-dtos/grants.d.ts +3 -0
- package/dist/vendor/sso-bridge-dtos/grants.js +2 -0
- package/dist/vendor/sso-bridge-dtos/index.d.ts +5 -0
- package/dist/vendor/sso-bridge-dtos/index.js +5 -0
- package/dist/vendor/sso-bridge-dtos/users.dto.d.ts +24 -0
- package/dist/vendor/sso-bridge-dtos/users.dto.js +90 -0
- package/dist/vendor/wallet-dtos/clients.dto.d.ts +22 -0
- package/dist/vendor/wallet-dtos/clients.dto.js +14 -0
- package/dist/vendor/wallet-dtos/credentials.dto.d.ts +32 -0
- package/dist/vendor/wallet-dtos/credentials.dto.js +47 -0
- package/dist/vendor/wallet-dtos/index.d.ts +7 -0
- package/dist/vendor/wallet-dtos/index.js +7 -0
- package/dist/vendor/wallet-dtos/issuance.dto.d.ts +238 -0
- package/dist/vendor/wallet-dtos/issuance.dto.js +1140 -0
- package/dist/vendor/wallet-dtos/scopes.dto.d.ts +25 -0
- package/dist/vendor/wallet-dtos/scopes.dto.js +152 -0
- package/dist/vendor/wallet-dtos/status.dto.d.ts +36 -0
- package/dist/vendor/wallet-dtos/status.dto.js +170 -0
- package/dist/vendor/wallet-dtos/utils/schema-converter.d.ts +14 -0
- package/dist/vendor/wallet-dtos/utils/schema-converter.js +43 -0
- package/dist/wallet/index.d.ts +2 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +2 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/wallet.sdk.d.ts +285 -0
- package/dist/wallet/wallet.sdk.d.ts.map +1 -0
- package/dist/wallet/wallet.sdk.js +384 -0
- package/dist/wallet/wallet.sdk.js.map +1 -0
- package/package.json +78 -3
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { TsgSdkAuthConfig } from "../config/sdk.config.js";
|
|
2
|
+
/**
|
|
3
|
+
* Handles OAuth 2.0 token acquisition, caching, and automatic refresh
|
|
4
|
+
* for all SDK HTTP clients.
|
|
5
|
+
*
|
|
6
|
+
* Supports three authentication strategies:
|
|
7
|
+
* - `client_secret_post` — client credentials with a shared secret.
|
|
8
|
+
* - `private_key_jwt` — client credentials with a signed JWT assertion.
|
|
9
|
+
* - `access_token` — static pre-obtained bearer token (no refresh).
|
|
10
|
+
*
|
|
11
|
+
* Tokens are cached and automatically re-acquired when they expire
|
|
12
|
+
* (with a 10-second safety buffer). OpenID Connect discovery is used
|
|
13
|
+
* to locate the token endpoint.
|
|
14
|
+
*/
|
|
15
|
+
export declare class AuthProvider {
|
|
16
|
+
private readonly authConfig;
|
|
17
|
+
private readonly ssoBridgeBaseUrl;
|
|
18
|
+
private cachedToken?;
|
|
19
|
+
private tokenExpiresAt;
|
|
20
|
+
private openIdConfig?;
|
|
21
|
+
constructor(authConfig: TsgSdkAuthConfig | undefined, ssoBridgeBaseUrl: string | undefined);
|
|
22
|
+
/**
|
|
23
|
+
* Get a valid access token, acquiring or refreshing one if necessary.
|
|
24
|
+
*
|
|
25
|
+
* - Returns `undefined` when no auth config is set (unauthenticated mode).
|
|
26
|
+
* - Returns the static token for `access_token` auth.
|
|
27
|
+
* - For other methods, returns a cached token or acquires a new one.
|
|
28
|
+
* @returns The access token string, or `undefined` if auth is not configured.
|
|
29
|
+
* @throws Throws an {@link SdkError} with code {@link SdkErrorCode.AUTH_FAILED} if token acquisition fails.
|
|
30
|
+
*/
|
|
31
|
+
getAccessToken(): Promise<string | undefined>;
|
|
32
|
+
/**
|
|
33
|
+
* Build an HTTP headers object containing the `Authorization` header.
|
|
34
|
+
*
|
|
35
|
+
* Returns an empty object when auth is not configured, allowing
|
|
36
|
+
* unauthenticated requests to pass through.
|
|
37
|
+
* @returns A headers record, e.g. `{ Authorization: "Bearer <token>" }`.
|
|
38
|
+
*/
|
|
39
|
+
getAuthHeaders(): Promise<Record<string, string>>;
|
|
40
|
+
private acquireToken;
|
|
41
|
+
private getOpenIdConfiguration;
|
|
42
|
+
private createClientAssertion;
|
|
43
|
+
private resolveAlgorithm;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=auth.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.provider.d.ts","sourceRoot":"","sources":["../../src/auth/auth.provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAWhE;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY;IAMrB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IANnC,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAsB;gBAGxB,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,gBAAgB,EAAE,MAAM,GAAG,SAAS;IAGvD;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAiBnD;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAQzC,YAAY;YA4DZ,sBAAsB;YAwCtB,qBAAqB;IAmBnC,OAAO,CAAC,gBAAgB;CAazB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { importJWK, SignJWT } from "jose";
|
|
2
|
+
import { SdkError, SdkErrorCode } from "../utils/errors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Buffer (in milliseconds) subtracted from the token expiry time to ensure
|
|
5
|
+
* tokens are refreshed before they actually expire.
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
const TOKEN_EXPIRY_BUFFER_MS = 10_000;
|
|
9
|
+
/**
|
|
10
|
+
* Handles OAuth 2.0 token acquisition, caching, and automatic refresh
|
|
11
|
+
* for all SDK HTTP clients.
|
|
12
|
+
*
|
|
13
|
+
* Supports three authentication strategies:
|
|
14
|
+
* - `client_secret_post` — client credentials with a shared secret.
|
|
15
|
+
* - `private_key_jwt` — client credentials with a signed JWT assertion.
|
|
16
|
+
* - `access_token` — static pre-obtained bearer token (no refresh).
|
|
17
|
+
*
|
|
18
|
+
* Tokens are cached and automatically re-acquired when they expire
|
|
19
|
+
* (with a 10-second safety buffer). OpenID Connect discovery is used
|
|
20
|
+
* to locate the token endpoint.
|
|
21
|
+
*/
|
|
22
|
+
export class AuthProvider {
|
|
23
|
+
authConfig;
|
|
24
|
+
ssoBridgeBaseUrl;
|
|
25
|
+
cachedToken;
|
|
26
|
+
tokenExpiresAt = 0;
|
|
27
|
+
openIdConfig;
|
|
28
|
+
constructor(authConfig, ssoBridgeBaseUrl) {
|
|
29
|
+
this.authConfig = authConfig;
|
|
30
|
+
this.ssoBridgeBaseUrl = ssoBridgeBaseUrl;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get a valid access token, acquiring or refreshing one if necessary.
|
|
34
|
+
*
|
|
35
|
+
* - Returns `undefined` when no auth config is set (unauthenticated mode).
|
|
36
|
+
* - Returns the static token for `access_token` auth.
|
|
37
|
+
* - For other methods, returns a cached token or acquires a new one.
|
|
38
|
+
* @returns The access token string, or `undefined` if auth is not configured.
|
|
39
|
+
* @throws Throws an {@link SdkError} with code {@link SdkErrorCode.AUTH_FAILED} if token acquisition fails.
|
|
40
|
+
*/
|
|
41
|
+
async getAccessToken() {
|
|
42
|
+
if (!this.authConfig) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
if (this.authConfig.method === "access_token") {
|
|
46
|
+
return this.authConfig.accessToken;
|
|
47
|
+
}
|
|
48
|
+
if (this.cachedToken && Date.now() < this.tokenExpiresAt) {
|
|
49
|
+
return this.cachedToken;
|
|
50
|
+
}
|
|
51
|
+
const token = await this.acquireToken();
|
|
52
|
+
return token;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build an HTTP headers object containing the `Authorization` header.
|
|
56
|
+
*
|
|
57
|
+
* Returns an empty object when auth is not configured, allowing
|
|
58
|
+
* unauthenticated requests to pass through.
|
|
59
|
+
* @returns A headers record, e.g. `{ Authorization: "Bearer <token>" }`.
|
|
60
|
+
*/
|
|
61
|
+
async getAuthHeaders() {
|
|
62
|
+
const token = await this.getAccessToken();
|
|
63
|
+
if (!token) {
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
return { Authorization: `Bearer ${token}` };
|
|
67
|
+
}
|
|
68
|
+
async acquireToken() {
|
|
69
|
+
const config = this.authConfig;
|
|
70
|
+
if (!config || config.method === "access_token") {
|
|
71
|
+
throw new SdkError("Cannot acquire token with access_token method", SdkErrorCode.AUTH_FAILED);
|
|
72
|
+
}
|
|
73
|
+
const openIdConfig = await this.getOpenIdConfiguration();
|
|
74
|
+
const tokenEndpoint = openIdConfig.token_endpoint;
|
|
75
|
+
const params = new URLSearchParams();
|
|
76
|
+
params.set("grant_type", "client_credentials");
|
|
77
|
+
params.set("client_id", config.clientId);
|
|
78
|
+
if (config.method === "client_secret_post") {
|
|
79
|
+
params.set("client_secret", config.clientSecret);
|
|
80
|
+
}
|
|
81
|
+
else if (config.method === "private_key_jwt") {
|
|
82
|
+
const assertion = await this.createClientAssertion(config.clientId, config.privateKeyJwk, tokenEndpoint);
|
|
83
|
+
params.set("client_assertion_type", "urn:ietf:params:oauth:client-assertion-type:jwt-bearer");
|
|
84
|
+
params.set("client_assertion", assertion);
|
|
85
|
+
}
|
|
86
|
+
const response = await fetch(tokenEndpoint, {
|
|
87
|
+
method: "POST",
|
|
88
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
89
|
+
body: params.toString()
|
|
90
|
+
});
|
|
91
|
+
if (!response.ok) {
|
|
92
|
+
const body = await response.text().catch(() => "");
|
|
93
|
+
throw new SdkError(`Token acquisition failed (${response.status}): ${body}`, SdkErrorCode.AUTH_FAILED, response.status);
|
|
94
|
+
}
|
|
95
|
+
const tokenResponse = await response.json();
|
|
96
|
+
this.cachedToken = tokenResponse.access_token;
|
|
97
|
+
if (tokenResponse.expires_in) {
|
|
98
|
+
this.tokenExpiresAt =
|
|
99
|
+
Date.now() + tokenResponse.expires_in * 1000 - TOKEN_EXPIRY_BUFFER_MS;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Default to 5 minutes if no expiry given
|
|
103
|
+
this.tokenExpiresAt = Date.now() + 5 * 60 * 1000 - TOKEN_EXPIRY_BUFFER_MS;
|
|
104
|
+
}
|
|
105
|
+
return this.cachedToken;
|
|
106
|
+
}
|
|
107
|
+
async getOpenIdConfiguration() {
|
|
108
|
+
if (this.openIdConfig) {
|
|
109
|
+
return this.openIdConfig;
|
|
110
|
+
}
|
|
111
|
+
const config = this.authConfig;
|
|
112
|
+
if (!config || config.method === "access_token") {
|
|
113
|
+
throw new SdkError("No OpenID configuration available", SdkErrorCode.AUTH_FAILED);
|
|
114
|
+
}
|
|
115
|
+
const url = config.openIdConfigurationUrl ??
|
|
116
|
+
(this.ssoBridgeBaseUrl
|
|
117
|
+
? new URL("/.well-known/openid-configuration", this.ssoBridgeBaseUrl)
|
|
118
|
+
.href
|
|
119
|
+
: undefined);
|
|
120
|
+
if (!url) {
|
|
121
|
+
throw new SdkError("Cannot determine OpenID configuration URL. Provide openIdConfigurationUrl or ssoBridgeBaseUrl.", SdkErrorCode.INVALID_CONFIG);
|
|
122
|
+
}
|
|
123
|
+
const response = await fetch(url);
|
|
124
|
+
if (!response.ok) {
|
|
125
|
+
throw new SdkError(`Failed to fetch OpenID configuration from ${url} (${response.status})`, SdkErrorCode.AUTH_FAILED, response.status);
|
|
126
|
+
}
|
|
127
|
+
this.openIdConfig = await response.json();
|
|
128
|
+
return this.openIdConfig;
|
|
129
|
+
}
|
|
130
|
+
async createClientAssertion(clientId, privateKeyJwk, audience) {
|
|
131
|
+
const key = await importJWK(privateKeyJwk);
|
|
132
|
+
const alg = this.resolveAlgorithm(privateKeyJwk);
|
|
133
|
+
return new SignJWT({})
|
|
134
|
+
.setProtectedHeader({ alg, typ: "JWT" })
|
|
135
|
+
.setIssuer(clientId)
|
|
136
|
+
.setSubject(clientId)
|
|
137
|
+
.setAudience(audience)
|
|
138
|
+
.setIssuedAt()
|
|
139
|
+
.setExpirationTime("5m")
|
|
140
|
+
.setJti(crypto.randomUUID())
|
|
141
|
+
.sign(key);
|
|
142
|
+
}
|
|
143
|
+
resolveAlgorithm(jwk) {
|
|
144
|
+
if (jwk.alg)
|
|
145
|
+
return jwk.alg;
|
|
146
|
+
switch (jwk.kty) {
|
|
147
|
+
case "EC":
|
|
148
|
+
return jwk.crv === "P-384" ? "ES384" : "ES256";
|
|
149
|
+
case "OKP":
|
|
150
|
+
return "EdDSA";
|
|
151
|
+
case "RSA":
|
|
152
|
+
return "RS256";
|
|
153
|
+
default:
|
|
154
|
+
return "ES256";
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=auth.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.provider.js","sourceRoot":"","sources":["../../src/auth/auth.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Supported OAuth 2.0 / authentication methods for the SDK. */
|
|
2
|
+
export type AuthMethod = "client_secret_post" | "private_key_jwt" | "access_token";
|
|
3
|
+
/** Response from an OAuth 2.0 token endpoint. */
|
|
4
|
+
export interface TokenResponse {
|
|
5
|
+
/** The issued access token. */
|
|
6
|
+
access_token: string;
|
|
7
|
+
/** Token type, typically `"Bearer"`. */
|
|
8
|
+
token_type: string;
|
|
9
|
+
/** Number of seconds until the token expires. */
|
|
10
|
+
expires_in?: number;
|
|
11
|
+
/** Space-delimited list of granted scopes. */
|
|
12
|
+
scope?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Subset of an OpenID Connect discovery document used by the SDK. */
|
|
15
|
+
export interface OpenIDConfiguration {
|
|
16
|
+
/** The issuer identifier of the OpenID provider. */
|
|
17
|
+
issuer: string;
|
|
18
|
+
/** URL of the token endpoint. */
|
|
19
|
+
token_endpoint: string;
|
|
20
|
+
/** URL of the authorization endpoint. */
|
|
21
|
+
authorization_endpoint?: string;
|
|
22
|
+
/** URL of the JSON Web Key Set document. */
|
|
23
|
+
jwks_uri: string;
|
|
24
|
+
/** Additional OpenID configuration fields. */
|
|
25
|
+
[key: string]: unknown;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=auth.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.types.d.ts","sourceRoot":"","sources":["../../src/auth/auth.types.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,MAAM,UAAU,GACpB,oBAAoB,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE5D,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,yCAAyC;IACzC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.types.js","sourceRoot":"","sources":["../../src/auth/auth.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
|