@tidecloak/js 0.14.41-staging → 0.14.42-staging
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 +32 -47
- package/dist/cjs/lib/tidecloak-dpop.js +151 -42
- package/dist/cjs/lib/tidecloak-dpop.js.map +1 -1
- package/dist/cjs/lib/tidecloak.js +300 -378
- package/dist/cjs/lib/tidecloak.js.map +1 -1
- package/dist/cjs/src/AdminAPI.js +12 -19
- package/dist/cjs/src/AdminAPI.js.map +1 -1
- package/dist/cjs/src/IAMService.js +155 -2098
- package/dist/cjs/src/IAMService.js.map +1 -1
- package/dist/cjs/src/index.js +1 -7
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/esm/lib/tidecloak-dpop.js +151 -42
- package/dist/esm/lib/tidecloak-dpop.js.map +1 -1
- package/dist/esm/lib/tidecloak.js +300 -377
- package/dist/esm/lib/tidecloak.js.map +1 -1
- package/dist/esm/src/AdminAPI.js +3 -7
- package/dist/esm/src/AdminAPI.js.map +1 -1
- package/dist/esm/src/IAMService.js +152 -2065
- package/dist/esm/src/IAMService.js.map +1 -1
- package/dist/esm/src/index.js +1 -7
- package/dist/esm/src/index.js.map +1 -1
- package/dist/types/AdminAPI.d.ts +1 -1
- package/dist/types/IAMService.d.ts +52 -603
- package/dist/types/index.d.ts +1 -11
- package/dist/types/lib/tidecloak-dpop.d.ts +19 -3
- package/dist/types/lib/tidecloak.d.ts +46 -38
- package/dist/types/src/AdminAPI.d.ts +1 -1
- package/dist/types/src/IAMService.d.ts +52 -603
- package/dist/types/src/index.d.ts +1 -11
- package/docs/FRONT_CHANNEL.md +55 -55
- package/lib/README.md +10 -14
- package/package.json +4 -25
- package/dist/cjs/lib/secureFetchPolicy.js +0 -45
- package/dist/cjs/lib/secureFetchPolicy.js.map +0 -1
- package/dist/cjs/src/dpopRoute.js +0 -30
- package/dist/cjs/src/dpopRoute.js.map +0 -1
- package/dist/cjs/src/dpopServer.js +0 -77
- package/dist/cjs/src/dpopServer.js.map +0 -1
- package/dist/cjs/src/generated/dpopAuthAsset.js +0 -7
- package/dist/cjs/src/generated/dpopAuthAsset.js.map +0 -1
- package/dist/cjs/src/policy-react.js +0 -51
- package/dist/cjs/src/policy-react.js.map +0 -1
- package/dist/cjs/src/types.js +0 -6
- package/dist/cjs/src/types.js.map +0 -1
- package/dist/cjs/src/utils/dpopAuthPage.js +0 -69
- package/dist/cjs/src/utils/dpopAuthPage.js.map +0 -1
- package/dist/cjs/src/utils/fetch.js +0 -39
- package/dist/cjs/src/utils/fetch.js.map +0 -1
- package/dist/cjs/src/utils/index.js +0 -17
- package/dist/cjs/src/utils/index.js.map +0 -1
- package/dist/cjs/src/utils/initOptions.js +0 -78
- package/dist/cjs/src/utils/initOptions.js.map +0 -1
- package/dist/cjs/src/utils/pkce.js +0 -48
- package/dist/cjs/src/utils/pkce.js.map +0 -1
- package/dist/cjs/src/utils/silentCheckSso.js +0 -138
- package/dist/cjs/src/utils/silentCheckSso.js.map +0 -1
- package/dist/cjs/src/vite.js +0 -43
- package/dist/cjs/src/vite.js.map +0 -1
- package/dist/esm/lib/secureFetchPolicy.js +0 -42
- package/dist/esm/lib/secureFetchPolicy.js.map +0 -1
- package/dist/esm/src/dpopRoute.js +0 -27
- package/dist/esm/src/dpopRoute.js.map +0 -1
- package/dist/esm/src/dpopServer.js +0 -68
- package/dist/esm/src/dpopServer.js.map +0 -1
- package/dist/esm/src/generated/dpopAuthAsset.js +0 -4
- package/dist/esm/src/generated/dpopAuthAsset.js.map +0 -1
- package/dist/esm/src/policy-react.js +0 -45
- package/dist/esm/src/policy-react.js.map +0 -1
- package/dist/esm/src/types.js +0 -5
- package/dist/esm/src/types.js.map +0 -1
- package/dist/esm/src/utils/dpopAuthPage.js +0 -63
- package/dist/esm/src/utils/dpopAuthPage.js.map +0 -1
- package/dist/esm/src/utils/fetch.js +0 -36
- package/dist/esm/src/utils/fetch.js.map +0 -1
- package/dist/esm/src/utils/index.js +0 -6
- package/dist/esm/src/utils/index.js.map +0 -1
- package/dist/esm/src/utils/initOptions.js +0 -75
- package/dist/esm/src/utils/initOptions.js.map +0 -1
- package/dist/esm/src/utils/pkce.js +0 -43
- package/dist/esm/src/utils/pkce.js.map +0 -1
- package/dist/esm/src/utils/silentCheckSso.js +0 -134
- package/dist/esm/src/utils/silentCheckSso.js.map +0 -1
- package/dist/esm/src/vite.js +0 -40
- package/dist/esm/src/vite.js.map +0 -1
- package/dist/types/dpopRoute.d.ts +0 -11
- package/dist/types/dpopServer.d.ts +0 -35
- package/dist/types/generated/dpopAuthAsset.d.ts +0 -2
- package/dist/types/lib/secureFetchPolicy.d.ts +0 -37
- package/dist/types/policy-react.d.ts +0 -40
- package/dist/types/src/dpopRoute.d.ts +0 -11
- package/dist/types/src/dpopServer.d.ts +0 -35
- package/dist/types/src/generated/dpopAuthAsset.d.ts +0 -2
- package/dist/types/src/policy-react.d.ts +0 -40
- package/dist/types/src/types.d.ts +0 -114
- package/dist/types/src/utils/dpopAuthPage.d.ts +0 -22
- package/dist/types/src/utils/fetch.d.ts +0 -11
- package/dist/types/src/utils/index.d.ts +0 -5
- package/dist/types/src/utils/initOptions.d.ts +0 -69
- package/dist/types/src/utils/pkce.d.ts +0 -24
- package/dist/types/src/utils/silentCheckSso.d.ts +0 -82
- package/dist/types/src/vite.d.ts +0 -13
- package/dist/types/types.d.ts +0 -114
- package/dist/types/utils/dpopAuthPage.d.ts +0 -22
- package/dist/types/utils/fetch.d.ts +0 -11
- package/dist/types/utils/index.d.ts +0 -5
- package/dist/types/utils/initOptions.d.ts +0 -69
- package/dist/types/utils/pkce.d.ts +0 -24
- package/dist/types/utils/silentCheckSso.d.ts +0 -82
- package/dist/types/vite.d.ts +0 -13
- package/docs/HYBRID_MODE.md +0 -185
- package/docs/NATIVE_MODE.md +0 -284
package/dist/types/index.d.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { IAMService } from './IAMService.js';
|
|
2
2
|
export { default as TideCloak } from "../lib/tidecloak.js";
|
|
3
3
|
export { RequestEnclave, ApprovalEnclaveNew } from "../lib/tidecloak.js";
|
|
4
4
|
export { Tools, Models } from "@tideorg/js";
|
|
5
|
-
export type NativeAdapter = import('./types.js').NativeAdapter;
|
|
6
|
-
export type NativeTokenData = import('./types.js').NativeTokenData;
|
|
7
|
-
export type NativeAuthCallbackResult = import('./types.js').NativeAuthCallbackResult;
|
|
8
|
-
export type NativeEncryptionCallbackResult = import('./types.js').NativeEncryptionCallbackResult;
|
|
9
|
-
export type NativeConfig = import('./types.js').NativeConfig;
|
|
10
|
-
/** @typedef {import('./types.js').NativeAdapter} NativeAdapter */
|
|
11
|
-
/** @typedef {import('./types.js').NativeTokenData} NativeTokenData */
|
|
12
|
-
/** @typedef {import('./types.js').NativeAuthCallbackResult} NativeAuthCallbackResult */
|
|
13
|
-
/** @typedef {import('./types.js').NativeEncryptionCallbackResult} NativeEncryptionCallbackResult */
|
|
14
|
-
/** @typedef {import('./types.js').NativeConfig} NativeConfig */
|
|
15
5
|
export { default as AdminAPI, AdminAPI as AdminAPIClass } from './AdminAPI.js';
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @import { DPoPState, DPoPSignatureProviderOptions } from "./tidecloak-dpop.js"
|
|
3
|
+
*/
|
|
4
|
+
import type { DPoPSignatureProviderOptions } from "./tidecloak-dpop.js";
|
|
1
5
|
/** @enum {string} */
|
|
2
6
|
export declare const BrowserSignatureAlgs: {
|
|
3
7
|
ES256: string;
|
|
@@ -51,8 +55,20 @@ export declare class DPoPSignatureProvider {
|
|
|
51
55
|
*/
|
|
52
56
|
generateDPoPProof(url: string, httpMethod: string, accessToken?: string, nonce?: string): Promise<string>;
|
|
53
57
|
/**
|
|
54
|
-
* Compute the
|
|
55
|
-
* @returns {string}
|
|
58
|
+
* Compute the RFC 7638 JWK thumbprint of the DPoP public key.
|
|
59
|
+
* @returns {Promise<string>} Base64url-encoded SHA-256 thumbprint
|
|
56
60
|
*/
|
|
57
|
-
generateJWKThumbprint(): string
|
|
61
|
+
generateJWKThumbprint(): Promise<string>;
|
|
62
|
+
/**
|
|
63
|
+
* Sign a delegation request as a JWT using the DPoP private key.
|
|
64
|
+
* The resulting JWT proves the user authorizes the delegation described by the claims.
|
|
65
|
+
*
|
|
66
|
+
* @param {string} resourcePublicKeyInfo Base64 URL encoded Ed25519 SubjectPublicKeyInfo
|
|
67
|
+
* @param {string} challengeMessage UTF8 text
|
|
68
|
+
* @param {string} resourceChallengeSignature Base64 URL encoded signature
|
|
69
|
+
* @param {string} accessToken Access token if calling resource server
|
|
70
|
+
* @returns {Promise<string>} Compact JWT string (header.payload.signature)
|
|
71
|
+
* @throws {Error} If the resource's challenge signature cannot be verified
|
|
72
|
+
*/
|
|
73
|
+
generateResourceDelegation(resourcePublicKeyInfo: string, challengeMessage: string, resourceChallengeSignature: string, accessToken: string): Promise<string>;
|
|
58
74
|
}
|
|
@@ -18,7 +18,24 @@ export type LoginIframe = {
|
|
|
18
18
|
iframe?: HTMLIFrameElement | undefined;
|
|
19
19
|
iframeOrigin?: string | undefined;
|
|
20
20
|
};
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* @typedef {Object} Endpoints
|
|
23
|
+
* @property {() => string} authorize
|
|
24
|
+
* @property {() => string} token
|
|
25
|
+
* @property {() => string} logout
|
|
26
|
+
* @property {() => string} checkSessionIframe
|
|
27
|
+
* @property {() => string=} thirdPartyCookiesIframe
|
|
28
|
+
* @property {() => string} register
|
|
29
|
+
* @property {() => string} userinfo
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* @typedef {Object} LoginIframe
|
|
33
|
+
* @property {boolean} enable
|
|
34
|
+
* @property {((error: Error | null, value?: boolean) => void)[]} callbackList
|
|
35
|
+
* @property {number} interval
|
|
36
|
+
* @property {HTMLIFrameElement=} iframe
|
|
37
|
+
* @property {string=} iframeOrigin
|
|
38
|
+
*/
|
|
22
39
|
export { RequestEnclave, ApprovalEnclave, ApprovalEnclaveNew, PolicySignRequest } from "heimdall-tide";
|
|
23
40
|
export { Tools, Models } from "@tideorg/js";
|
|
24
41
|
export type ParsedCallbackParams = {
|
|
@@ -57,7 +74,7 @@ export type AccessTokenResponse = {
|
|
|
57
74
|
};
|
|
58
75
|
export default class TideCloak {
|
|
59
76
|
#private;
|
|
60
|
-
|
|
77
|
+
dpopConfig: import("./tidecloak.js").DPoPConfig | undefined;
|
|
61
78
|
dpopSigningAlgValuesSupported: string[] | undefined;
|
|
62
79
|
issuer: string | undefined;
|
|
63
80
|
didInitialize: boolean;
|
|
@@ -77,15 +94,6 @@ export default class TideCloak {
|
|
|
77
94
|
silentCheckSsoRedirectUri: string | undefined;
|
|
78
95
|
/** @type {boolean} */
|
|
79
96
|
silentCheckSsoFallback: boolean;
|
|
80
|
-
/**
|
|
81
|
-
* Max time (ms) to wait for the hidden silent-check-sso iframe to post back
|
|
82
|
-
* before treating the attempt as "not authenticated". Guards against the
|
|
83
|
-
* post-logout wedge where the check-sso (or the Tide enclave it spins up)
|
|
84
|
-
* never responds and init() would otherwise hang forever. Overridable via
|
|
85
|
-
* initOptions.silentCheckSsoTimeout.
|
|
86
|
-
* @type {number}
|
|
87
|
-
*/
|
|
88
|
-
silentCheckSsoTimeout: number;
|
|
89
97
|
/** @type {TideCloakPkceMethod} */
|
|
90
98
|
pkceMethod: TideCloakPkceMethod;
|
|
91
99
|
enableLogging: boolean;
|
|
@@ -106,9 +114,9 @@ export default class TideCloak {
|
|
|
106
114
|
refreshToken: string | undefined;
|
|
107
115
|
/** @type {TideCloakTokenParsed=} */
|
|
108
116
|
refreshTokenParsed: TideCloakTokenParsed | undefined;
|
|
109
|
-
/** @type {string
|
|
117
|
+
/** @type {string=} */
|
|
110
118
|
doken: string | undefined;
|
|
111
|
-
/** @type {TideCloakTokenParsed
|
|
119
|
+
/** @type {TideCloakTokenParsed=} */
|
|
112
120
|
dokenParsed: TideCloakTokenParsed | undefined;
|
|
113
121
|
/** @type {any} */
|
|
114
122
|
requestEnclave: any;
|
|
@@ -166,11 +174,6 @@ export default class TideCloak {
|
|
|
166
174
|
* @returns {Promise<void>}
|
|
167
175
|
*/
|
|
168
176
|
login: (options?: TideCloakLoginOptions) => Promise<void>;
|
|
169
|
-
/**
|
|
170
|
-
* Ensure the access token is valid, refreshing if needed.
|
|
171
|
-
* @returns {Promise<void>}
|
|
172
|
-
*/
|
|
173
|
-
ensureTokenReady(): Promise<void>;
|
|
174
177
|
/**
|
|
175
178
|
* @param {TideCloakLoginOptions} [options]
|
|
176
179
|
* @returns {Promise<string>}
|
|
@@ -234,8 +237,13 @@ export default class TideCloak {
|
|
|
234
237
|
* @returns {Promise<boolean>}
|
|
235
238
|
*/
|
|
236
239
|
updateToken: (minValidity: number) => Promise<boolean>;
|
|
237
|
-
clearToken: () => void
|
|
238
|
-
|
|
240
|
+
clearToken: () => Promise<void>;
|
|
241
|
+
fetch: (url: any, init?: {}) => Promise<Response>;
|
|
242
|
+
/**
|
|
243
|
+
* Ensure the access token is valid, refreshing if needed.
|
|
244
|
+
* @returns {Promise<void>}
|
|
245
|
+
*/
|
|
246
|
+
ensureTokenReady(): Promise<void>;
|
|
239
247
|
/**
|
|
240
248
|
* Register a callback for when the browser blocks the Tide enclave popup.
|
|
241
249
|
* It replaces the default "pop-ups are blocked" header.
|
|
@@ -253,40 +261,40 @@ export default class TideCloak {
|
|
|
253
261
|
/**
|
|
254
262
|
* Role-based encryption via Tide RequestEnclave.
|
|
255
263
|
* @param {{ data: string | Uint8Array, tags: string[] }[]} toEncrypt
|
|
256
|
-
* @param {Uint8Array} decryption_policy If you'd like the data to be protected by a decryption policy
|
|
264
|
+
* @param {Uint8Array | null} [decryption_policy] If you'd like the data to be protected by a decryption policy
|
|
257
265
|
* @returns {Promise<(string | Uint8Array)[]>}
|
|
258
266
|
*/
|
|
259
267
|
encrypt(toEncrypt: {
|
|
260
268
|
data: string | Uint8Array;
|
|
261
269
|
tags: string[];
|
|
262
|
-
}[], decryption_policy?: Uint8Array): Promise<(string | Uint8Array)[]>;
|
|
270
|
+
}[], decryption_policy?: Uint8Array | null): Promise<(string | Uint8Array)[]>;
|
|
263
271
|
/**
|
|
264
|
-
* Begin
|
|
265
|
-
* @param {{ data:
|
|
266
|
-
* @returns
|
|
272
|
+
* Begin drafting an encryption request.
|
|
273
|
+
* @param {{ data: Uint8Array, tags: string[] }[]} toEncrypt
|
|
274
|
+
* @returns {Promise<Uint8Array>}
|
|
267
275
|
*/
|
|
268
276
|
draftEncryption(toEncrypt: {
|
|
269
|
-
data:
|
|
277
|
+
data: Uint8Array;
|
|
270
278
|
tags: string[];
|
|
271
|
-
}[]): Promise<
|
|
279
|
+
}[]): Promise<Uint8Array>;
|
|
272
280
|
/**
|
|
273
|
-
* Commit
|
|
281
|
+
* Commit an encryption request with a specified policy.
|
|
274
282
|
* @param {Uint8Array} request
|
|
275
283
|
* @param {Uint8Array} decryption_policy
|
|
276
284
|
* @returns {Promise<Uint8Array[]>}
|
|
277
285
|
*/
|
|
278
286
|
commitEncryption(request: Uint8Array, decryption_policy: Uint8Array): Promise<Uint8Array[]>;
|
|
279
287
|
/**
|
|
280
|
-
* Begin
|
|
281
|
-
* @param {{ encrypted:
|
|
282
|
-
* @returns {Uint8Array}
|
|
288
|
+
* Begin drafting a decryption request.
|
|
289
|
+
* @param {{ encrypted: Uint8Array, tags: string[] }[]} toDecrypt
|
|
290
|
+
* @returns {Promise<Uint8Array>}
|
|
283
291
|
*/
|
|
284
292
|
draftDecryption(toDecrypt: {
|
|
285
|
-
encrypted:
|
|
293
|
+
encrypted: Uint8Array;
|
|
286
294
|
tags: string[];
|
|
287
|
-
}[]): Uint8Array
|
|
295
|
+
}[]): Promise<Uint8Array>;
|
|
288
296
|
/**
|
|
289
|
-
* Commit a decryption request with a specified policy
|
|
297
|
+
* Commit a decryption request with a specified policy.
|
|
290
298
|
* @param {Uint8Array} request
|
|
291
299
|
* @param {Uint8Array} decryption_policy
|
|
292
300
|
* @returns {Promise<Uint8Array[]>}
|
|
@@ -312,22 +320,22 @@ export default class TideCloak {
|
|
|
312
320
|
status: "approved" | "denied" | "pending";
|
|
313
321
|
}[]>;
|
|
314
322
|
/**
|
|
315
|
-
* Execute a Tide Sign Request
|
|
323
|
+
* Execute a Tide Sign Request.
|
|
316
324
|
* @param {Uint8Array} request
|
|
317
325
|
* @param {boolean} [waitForAll=false]
|
|
318
|
-
* @returns {Promise<
|
|
326
|
+
* @returns {Promise<any[]>} Array of signatures
|
|
319
327
|
*/
|
|
320
328
|
executeSignRequest(request: Uint8Array, waitForAll?: boolean): Promise<any[]>;
|
|
321
329
|
/**
|
|
322
330
|
* Role-based decryption via Tide RequestEnclave.
|
|
323
331
|
* @param {{ encrypted: string | Uint8Array, tags: string[] }[]} toDecrypt
|
|
324
|
-
* @param {Uint8Array} decryption_policy If the data is protected by a decryption policy
|
|
332
|
+
* @param {Uint8Array | null} [decryption_policy] If the data is protected by a decryption policy
|
|
325
333
|
* @returns {Promise<(string | Uint8Array)[]>}
|
|
326
334
|
*/
|
|
327
335
|
decrypt(toDecrypt: {
|
|
328
336
|
encrypted: string | Uint8Array;
|
|
329
337
|
tags: string[];
|
|
330
|
-
}[], decryption_policy?: Uint8Array): Promise<(string | Uint8Array)[]>;
|
|
338
|
+
}[], decryption_policy?: Uint8Array | null): Promise<(string | Uint8Array)[]>;
|
|
331
339
|
}
|
|
332
340
|
export type CallbackState = {
|
|
333
341
|
state: string;
|
|
@@ -21,7 +21,7 @@ declare class AdminAPI {
|
|
|
21
21
|
* When DPoP is enabled the issued token is sender-constrained (`typ: DPoP`,
|
|
22
22
|
* `cnf.jkt`), and RFC 9449 says a bound token presented as a plain `Bearer` is
|
|
23
23
|
* invalid - the server answers a bare `401` explaining nothing. So every admin
|
|
24
|
-
* call goes through `IAMService.
|
|
24
|
+
* call goes through `IAMService.fetch`, which:
|
|
25
25
|
*
|
|
26
26
|
* - with a DPoP provider: upgrades `Authorization: Bearer <our token>` to
|
|
27
27
|
* `Authorization: DPoP <our token>` + a `DPoP:` proof (and handles nonces);
|