@thunderid/javascript 1.1.0 → 1.2.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.
- package/dist/IsomorphicCrypto.d.ts +18 -0
- package/dist/IsomorphicCrypto.d.ts.map +1 -1
- package/dist/StorageManager.d.ts +1 -0
- package/dist/StorageManager.d.ts.map +1 -1
- package/dist/ThunderIDJavaScriptClient.d.ts +6 -0
- package/dist/ThunderIDJavaScriptClient.d.ts.map +1 -1
- package/dist/cjs/index.cjs +241 -7
- package/dist/constants/BackchannelLogoutConstants.d.ts +13 -0
- package/dist/constants/BackchannelLogoutConstants.d.ts.map +1 -0
- package/dist/edge/index.js +238 -8
- package/dist/errors/exception.d.ts +7 -0
- package/dist/errors/exception.d.ts.map +1 -1
- package/dist/i18n/models/i18n.d.ts +1 -0
- package/dist/i18n/models/i18n.d.ts.map +1 -1
- package/dist/i18n/translations/en-US.d.ts.map +1 -1
- package/dist/i18n/translations/fr-FR.d.ts.map +1 -1
- package/dist/i18n/translations/hi-IN.d.ts.map +1 -1
- package/dist/i18n/translations/ja-JP.d.ts.map +1 -1
- package/dist/i18n/translations/pt-BR.d.ts.map +1 -1
- package/dist/i18n/translations/pt-PT.d.ts.map +1 -1
- package/dist/i18n/translations/si-LK.d.ts.map +1 -1
- package/dist/i18n/translations/ta-IN.d.ts.map +1 -1
- package/dist/i18n/translations/te-IN.d.ts.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +238 -8
- package/dist/models/embedded-flow.d.ts +14 -1
- package/dist/models/embedded-flow.d.ts.map +1 -1
- package/dist/models/embedded-signup-flow.d.ts +4 -0
- package/dist/models/embedded-signup-flow.d.ts.map +1 -1
- package/dist/models/logout-token.d.ts +58 -0
- package/dist/models/logout-token.d.ts.map +1 -0
- package/dist/utils/AuthenticationHelper.d.ts +31 -0
- package/dist/utils/AuthenticationHelper.d.ts.map +1 -1
- package/dist/utils/parseKeyValuePairs.d.ts +21 -0
- package/dist/utils/parseKeyValuePairs.d.ts.map +1 -0
- package/dist/utils/validateLogoutTokenClaims.d.ts +15 -0
- package/dist/utils/validateLogoutTokenClaims.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -42,6 +42,24 @@ export declare class IsomorphicCrypto<T = any> {
|
|
|
42
42
|
* @throws
|
|
43
43
|
*/
|
|
44
44
|
isValidIdToken(idToken: string, jwk: JWKInterface, clientId: string, issuer: string, username: string, clockTolerance: number | undefined, validateJwtIssuer: boolean | undefined): Promise<boolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Verifies the signature of a back-channel logout token, along with its audience, issuer,
|
|
47
|
+
* lifetime and, when the token has one, subject.
|
|
48
|
+
*
|
|
49
|
+
* @param logoutToken - The logout token received from the server.
|
|
50
|
+
* @param jwk - The server key the token names.
|
|
51
|
+
* @param clientId - The client the token must be addressed to.
|
|
52
|
+
* @param issuer - The expected issuer.
|
|
53
|
+
* @param subject - The token's subject, when it has one.
|
|
54
|
+
* @param clockTolerance - Allowed clock difference in seconds.
|
|
55
|
+
*
|
|
56
|
+
* @throws {InvalidLogoutTokenError} When verification fails. The message never includes the token.
|
|
57
|
+
*/
|
|
58
|
+
verifyLogoutTokenSignature(logoutToken: string, jwk: JWKInterface, clientId: string, issuer: string, subject: string | undefined, clockTolerance: number): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Decodes the JOSE header of a JWT without verifying its signature.
|
|
61
|
+
*/
|
|
62
|
+
decodeJwtHeader<R = Record<string, unknown>>(token: string): R;
|
|
45
63
|
decodeJwtToken<R = Record<string, unknown>>(token: string): R;
|
|
46
64
|
}
|
|
47
65
|
//# sourceMappingURL=IsomorphicCrypto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsomorphicCrypto.d.ts","sourceRoot":"","sources":["../src/IsomorphicCrypto.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAErD,qBAAa,gBAAgB,CAAC,CAAC,GAAG,GAAG;IACnC,OAAO,CAAC,WAAW,CAAY;gBAEZ,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAIzC;;;;OAIG;IACI,eAAe,IAAI,MAAM;IAIhC;;;;;;OAMG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhE;;;;;;;;;OASG;IAEI,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,YAAY;IAoBjF;;;;;;;;;;;;;OAaG;IACI,cAAc,CACnB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,iBAAiB,EAAE,OAAO,GAAG,SAAS,GACrC,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"IsomorphicCrypto.d.ts","sourceRoot":"","sources":["../src/IsomorphicCrypto.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,MAAM,EAAE,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAErD,qBAAa,gBAAgB,CAAC,CAAC,GAAG,GAAG;IACnC,OAAO,CAAC,WAAW,CAAY;gBAEZ,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAIzC;;;;OAIG;IACI,eAAe,IAAI,MAAM;IAIhC;;;;;;OAMG;IACU,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhE;;;;;;;;;OASG;IAEI,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,YAAY;IAoBjF;;;;;;;;;;;;;OAaG;IACI,cAAc,CACnB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,iBAAiB,EAAE,OAAO,GAAG,SAAS,GACrC,OAAO,CAAC,OAAO,CAAC;IA4BnB;;;;;;;;;;;;OAYG;IACU,0BAA0B,CACrC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IA2BhB;;OAEG;IACI,eAAe,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;IAY9D,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;CAUrE"}
|
package/dist/StorageManager.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ declare class StorageManager<T> {
|
|
|
27
27
|
setPersistedData(persistedData: Partial<TemporaryStore>, userId?: string): Promise<void>;
|
|
28
28
|
getSessionData(userId?: string, instanceId?: string): Promise<SessionData>;
|
|
29
29
|
getCustomData<K>(key: string, userId?: string): Promise<K>;
|
|
30
|
+
removeCustomData(key: string, userId?: string): Promise<void>;
|
|
30
31
|
setSessionStatus(status: string): void;
|
|
31
32
|
getSessionStatus(): string;
|
|
32
33
|
removeSessionStatus(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorageManager.d.ts","sourceRoot":"","sources":["../src/StorageManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"StorageManager.d.ts","sourceRoot":"","sources":["../src/StorageManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { Crypto } from './models/crypto';
|
|
|
7
7
|
import { ExtendedAuthorizeRequestUrlParams } from './models/oauth-request';
|
|
8
8
|
import { OIDCDiscoveryApiResponse } from './models/oidc-discovery';
|
|
9
9
|
import { OIDCEndpoints } from './models/oidc-endpoints';
|
|
10
|
+
import { LogoutTokenClaims } from './models/logout-token';
|
|
10
11
|
import { UserSession } from './models/session';
|
|
11
12
|
import { Storage } from './models/store';
|
|
12
13
|
import { IdToken, TokenExchangeRequestConfig, TokenResponse } from './models/token';
|
|
@@ -39,6 +40,11 @@ declare class ThunderIDJavaScriptClient<T = Config> implements ThunderIDClient<T
|
|
|
39
40
|
protected clearSessionAsync(sessionId?: string): Promise<void>;
|
|
40
41
|
setSession(sessionData: Record<string, unknown>, sessionId?: string): Promise<void>;
|
|
41
42
|
decodeJwtToken<R = Record<string, unknown>>(token: string): Promise<R>;
|
|
43
|
+
/**
|
|
44
|
+
* Validates a back-channel logout token and returns its claims. Protected, because only an SDK
|
|
45
|
+
* that runs on a server can receive one; such an SDK builds its logout handler on this.
|
|
46
|
+
*/
|
|
47
|
+
protected validateLogoutToken(logoutToken: string): Promise<LogoutTokenClaims>;
|
|
42
48
|
exchangeToken(config: TokenExchangeRequestConfig, sessionId?: string): Promise<TokenResponse | Response | User>;
|
|
43
49
|
isLoading(): boolean;
|
|
44
50
|
signIn(_options?: SignInOptions): Promise<User | TokenResponse | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThunderIDJavaScriptClient.d.ts","sourceRoot":"","sources":["../src/ThunderIDJavaScriptClient.ts"],"names":[],"mappings":"AAYA,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAC,mBAAmB,EAAE,oBAAoB,EAAE,eAAe,EAAC,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAC,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAmB,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,iCAAiC,EAAC,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAC,wBAAwB,EAAC,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAc,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,OAAO,EAAiB,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAyB,OAAO,EAAE,0BAA0B,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAC,IAAI,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AA2B9C,cAAM,yBAAyB,CAAC,CAAC,GAAG,MAAM,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IACvE,SAAS,CAAC,cAAc,EAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAE7C,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,cAAc,CAAsC;IAE5D,OAAO,CAAC,4BAA4B,CAA2C;IAE/E,OAAO,CAAC,UAAU,CAA2B;IAE7C,OAAO,CAAC,YAAY,CAAoB;IAExC,OAAO,CAAC,eAAe,CAAK;IAE5B,OAAO,CAAC,UAAU,CAAU;IAE5B,OAAO,CAAC,OAAO,CAAM;gBAET,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM;IAOtC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA8C1D,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD,gBAAgB,IAAI,CAAC;IAIf,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAavC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB7C,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBhE,OAAO,CAAC,uBAAuB;IAYxB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7C;;;;OAIG;IACH,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ThunderIDJavaScriptClient.d.ts","sourceRoot":"","sources":["../src/ThunderIDJavaScriptClient.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -81,6 +81,15 @@ var ThunderIDAuthException = class extends Error {
|
|
|
81
81
|
Object.setPrototypeOf(this, new.target.prototype);
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
|
+
/**
|
|
85
|
+
* Raised when a back-channel logout token is not valid. A logout handler answers 400 for this and a
|
|
86
|
+
* 5xx for any other failure, which tells the server whether a retry can help.
|
|
87
|
+
*/
|
|
88
|
+
var InvalidLogoutTokenError = class extends ThunderIDAuthException {
|
|
89
|
+
constructor(code, message) {
|
|
90
|
+
super(code, "Invalid logout token.", message);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
84
93
|
|
|
85
94
|
//#endregion
|
|
86
95
|
//#region src/IsomorphicCrypto.ts
|
|
@@ -144,6 +153,38 @@ var IsomorphicCrypto = class {
|
|
|
144
153
|
return Promise.reject(new ThunderIDAuthException("JS-CRYPTO_HELPER-IVIT-IV01", "Invalid ID token.", "ID token validation returned false"));
|
|
145
154
|
}).catch((error$1) => Promise.reject(error$1));
|
|
146
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Verifies the signature of a back-channel logout token, along with its audience, issuer,
|
|
158
|
+
* lifetime and, when the token has one, subject.
|
|
159
|
+
*
|
|
160
|
+
* @param logoutToken - The logout token received from the server.
|
|
161
|
+
* @param jwk - The server key the token names.
|
|
162
|
+
* @param clientId - The client the token must be addressed to.
|
|
163
|
+
* @param issuer - The expected issuer.
|
|
164
|
+
* @param subject - The token's subject, when it has one.
|
|
165
|
+
* @param clockTolerance - Allowed clock difference in seconds.
|
|
166
|
+
*
|
|
167
|
+
* @throws {InvalidLogoutTokenError} When verification fails. The message never includes the token.
|
|
168
|
+
*/
|
|
169
|
+
async verifyLogoutTokenSignature(logoutToken, jwk, clientId, issuer, subject, clockTolerance) {
|
|
170
|
+
let verified = false;
|
|
171
|
+
try {
|
|
172
|
+
verified = await this.cryptoUtils.verifyJwt(logoutToken, jwk, TokenConstants_default.SignatureValidation.SUPPORTED_ALGORITHMS, clientId, issuer, subject, clockTolerance, true);
|
|
173
|
+
} catch {
|
|
174
|
+
verified = false;
|
|
175
|
+
}
|
|
176
|
+
if (!verified) throw new InvalidLogoutTokenError("JS-CRYPTO_HELPER-VLTS-IV01", "The logout token signature could not be verified.");
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Decodes the JOSE header of a JWT without verifying its signature.
|
|
180
|
+
*/
|
|
181
|
+
decodeJwtHeader(token) {
|
|
182
|
+
try {
|
|
183
|
+
return JSON.parse(this.cryptoUtils.base64URLDecode(token?.split(".")[0]));
|
|
184
|
+
} catch {
|
|
185
|
+
throw new ThunderIDAuthException("JS-CRYPTO_UTIL-DJH-IV01", "Decoding token failed.", "The token header could not be decoded.");
|
|
186
|
+
}
|
|
187
|
+
}
|
|
147
188
|
decodeJwtToken(token) {
|
|
148
189
|
try {
|
|
149
190
|
const utf8String = this.cryptoUtils.base64URLDecode(token?.split(".")[1]);
|
|
@@ -1032,6 +1073,8 @@ let EmbeddedFlowComponentType = /* @__PURE__ */ function(EmbeddedFlowComponentTy
|
|
|
1032
1073
|
EmbeddedFlowComponentType$1["Icon"] = "ICON";
|
|
1033
1074
|
/** Image display component for logos and illustrations */
|
|
1034
1075
|
EmbeddedFlowComponentType$1["Image"] = "IMAGE";
|
|
1076
|
+
/** Key-value list display component that shows label and value pairs published in additionalData */
|
|
1077
|
+
EmbeddedFlowComponentType$1["KeyValueList"] = "KEY_VALUE_LIST";
|
|
1035
1078
|
/** One-time password input field for multi-factor authentication */
|
|
1036
1079
|
EmbeddedFlowComponentType$1["OtpInput"] = "OTP_INPUT";
|
|
1037
1080
|
/** Organization unit tree picker for selecting an OU */
|
|
@@ -2082,6 +2125,21 @@ const ApplicationNativeAuthenticationConstants = { SupportedAuthenticators: {
|
|
|
2082
2125
|
} };
|
|
2083
2126
|
var ApplicationNativeAuthenticationConstants_default = ApplicationNativeAuthenticationConstants;
|
|
2084
2127
|
|
|
2128
|
+
//#endregion
|
|
2129
|
+
//#region src/constants/BackchannelLogoutConstants.ts
|
|
2130
|
+
/**
|
|
2131
|
+
* Constants for OpenID Connect Back-Channel Logout 1.0, for an SDK that receives logout tokens.
|
|
2132
|
+
*/
|
|
2133
|
+
const BackchannelLogoutConstants = {
|
|
2134
|
+
DEFAULT_CLOCK_TOLERANCE_SECONDS: 60,
|
|
2135
|
+
EVENT: "http://schemas.openid.net/event/backchannel-logout",
|
|
2136
|
+
JWKS_CACHE_TTL_MS: 6e5,
|
|
2137
|
+
JWKS_MIN_REFETCH_INTERVAL_MS: 3e4,
|
|
2138
|
+
TOKEN_PARAM: "logout_token",
|
|
2139
|
+
TOKEN_TYPE: "logout+jwt"
|
|
2140
|
+
};
|
|
2141
|
+
var BackchannelLogoutConstants_default = BackchannelLogoutConstants;
|
|
2142
|
+
|
|
2085
2143
|
//#endregion
|
|
2086
2144
|
//#region src/constants/ScopeConstants.ts
|
|
2087
2145
|
/**
|
|
@@ -2720,6 +2778,9 @@ var StorageManager = class StorageManager {
|
|
|
2720
2778
|
async getCustomData(key, userId) {
|
|
2721
2779
|
return JSON.parse(await this.store.getData(this.resolveKey(key, userId)) ?? null);
|
|
2722
2780
|
}
|
|
2781
|
+
async removeCustomData(key, userId) {
|
|
2782
|
+
await this.store.removeData(this.resolveKey(key, userId));
|
|
2783
|
+
}
|
|
2723
2784
|
setSessionStatus(status) {
|
|
2724
2785
|
if (StorageManager.isLocalStorageAvailable()) localStorage.setItem(`${this.vendor}-session-active`, status);
|
|
2725
2786
|
}
|
|
@@ -2954,6 +3015,47 @@ const RESOURCE_ENDPOINT_KEYS = [
|
|
|
2954
3015
|
const resolveResourceEndpoint = (key, config, explicitUrl) => explicitUrl ?? config?.endpoints?.[key] ?? void 0;
|
|
2955
3016
|
var resolveResourceEndpoint_default = resolveResourceEndpoint;
|
|
2956
3017
|
|
|
3018
|
+
//#endregion
|
|
3019
|
+
//#region src/utils/validateLogoutTokenClaims.ts
|
|
3020
|
+
const fail = (code, message) => {
|
|
3021
|
+
throw new InvalidLogoutTokenError(code, message);
|
|
3022
|
+
};
|
|
3023
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
3024
|
+
const isNonEmptyString = (value) => typeof value === "string" && value.length > 0;
|
|
3025
|
+
/**
|
|
3026
|
+
* Checks the header and claims of a back-channel logout token, per OpenID Connect Back-Channel
|
|
3027
|
+
* Logout 1.0 section 2.6. It does not verify the signature: the caller does that with the server's
|
|
3028
|
+
* keys. Messages never include the token or its claim values.
|
|
3029
|
+
*
|
|
3030
|
+
* @param header - The decoded JOSE header.
|
|
3031
|
+
* @param payload - The decoded claims.
|
|
3032
|
+
* @param options - The issuer, client and clock the claims are checked against.
|
|
3033
|
+
* @returns The claims, typed.
|
|
3034
|
+
* @throws {InvalidLogoutTokenError} When any check fails.
|
|
3035
|
+
*/
|
|
3036
|
+
const validateLogoutTokenClaims = (header, payload, options) => {
|
|
3037
|
+
if (!isRecord(header) || !isRecord(payload)) return fail("JS-LOGOUT_TOKEN-VLTC-IV01", "The logout token is not a well-formed JWT.");
|
|
3038
|
+
const type = typeof header["typ"] === "string" ? header["typ"].toLowerCase() : "";
|
|
3039
|
+
if (type !== BackchannelLogoutConstants_default.TOKEN_TYPE && type !== `application/${BackchannelLogoutConstants_default.TOKEN_TYPE}`) return fail("JS-LOGOUT_TOKEN-VLTC-IV02", "The token type is not logout+jwt.");
|
|
3040
|
+
if (typeof header["alg"] !== "string" || !options.supportedAlgorithms.includes(header["alg"])) return fail("JS-LOGOUT_TOKEN-VLTC-IV03", "The signature algorithm is not supported.");
|
|
3041
|
+
if ("nonce" in payload) return fail("JS-LOGOUT_TOKEN-VLTC-IV04", "A logout token must not carry a nonce.");
|
|
3042
|
+
const { events } = payload;
|
|
3043
|
+
if (!isRecord(events) || !isRecord(events[BackchannelLogoutConstants_default.EVENT])) return fail("JS-LOGOUT_TOKEN-VLTC-IV05", "The back-channel logout event is missing.");
|
|
3044
|
+
if (payload["iss"] !== options.issuer) return fail("JS-LOGOUT_TOKEN-VLTC-IV06", "The issuer does not match.");
|
|
3045
|
+
const audiences = Array.isArray(payload["aud"]) ? payload["aud"] : [payload["aud"]];
|
|
3046
|
+
if (!isNonEmptyString(options.clientId) || !audiences.includes(options.clientId)) return fail("JS-LOGOUT_TOKEN-VLTC-IV07", "The audience does not include this client.");
|
|
3047
|
+
const now = options.now ?? Math.floor(Date.now() / 1e3);
|
|
3048
|
+
const tolerance = options.clockTolerance ?? BackchannelLogoutConstants_default.DEFAULT_CLOCK_TOLERANCE_SECONDS;
|
|
3049
|
+
if (typeof payload["iat"] !== "number" || payload["iat"] > now + tolerance) return fail("JS-LOGOUT_TOKEN-VLTC-IV08", "The issued-at time is missing or in the future.");
|
|
3050
|
+
if (typeof payload["exp"] !== "number" || payload["exp"] <= now - tolerance) return fail("JS-LOGOUT_TOKEN-VLTC-IV09", "The token has expired.");
|
|
3051
|
+
if ("sid" in payload && !isNonEmptyString(payload["sid"])) return fail("JS-LOGOUT_TOKEN-VLTC-IV10", "The session identifier is not valid.");
|
|
3052
|
+
if ("sub" in payload && !isNonEmptyString(payload["sub"])) return fail("JS-LOGOUT_TOKEN-VLTC-IV10", "The subject is not valid.");
|
|
3053
|
+
if (!("sid" in payload) && !("sub" in payload)) return fail("JS-LOGOUT_TOKEN-VLTC-IV11", "The token names neither a session nor a subject.");
|
|
3054
|
+
if (!isNonEmptyString(payload["jti"])) return fail("JS-LOGOUT_TOKEN-VLTC-IV12", "The token identifier is missing.");
|
|
3055
|
+
return payload;
|
|
3056
|
+
};
|
|
3057
|
+
var validateLogoutTokenClaims_default = validateLogoutTokenClaims;
|
|
3058
|
+
|
|
2957
3059
|
//#endregion
|
|
2958
3060
|
//#region src/constants/TokenExchangeConstants.ts
|
|
2959
3061
|
/**
|
|
@@ -2994,6 +3096,9 @@ var AuthenticationHelper = class {
|
|
|
2994
3096
|
config;
|
|
2995
3097
|
oidcProviderMetaData;
|
|
2996
3098
|
cryptoHelper;
|
|
3099
|
+
jwksCache;
|
|
3100
|
+
jwksFetch;
|
|
3101
|
+
jwksFetchStartedAt = 0;
|
|
2997
3102
|
/**
|
|
2998
3103
|
* Creates a new `AuthenticationHelper` instance.
|
|
2999
3104
|
*
|
|
@@ -3098,6 +3203,83 @@ var AuthenticationHelper = class {
|
|
|
3098
3203
|
* @throws {ThunderIDAuthException} When the JWKS endpoint is missing or the request fails.
|
|
3099
3204
|
*/
|
|
3100
3205
|
async validateIdToken(idToken) {
|
|
3206
|
+
const keys = await this.fetchJwks();
|
|
3207
|
+
const { issuer } = await this.oidcProviderMetaData();
|
|
3208
|
+
const jwk = await this.cryptoHelper.getJWKForTheIdToken(idToken.split(".")[0], keys);
|
|
3209
|
+
return this.cryptoHelper.isValidIdToken(idToken, jwk, (await this.config()).clientId ?? "", issuer ?? "", this.cryptoHelper.decodeJwtToken(idToken).sub, (await this.config()).tokenValidation?.idToken?.clockTolerance, (await this.config()).tokenValidation?.idToken?.validateIssuer ?? true);
|
|
3210
|
+
}
|
|
3211
|
+
/**
|
|
3212
|
+
* Validates a back-channel logout token: its type, event, issuer, audience and lifetime, then its
|
|
3213
|
+
* signature against the server's keys. The claims are checked first, so a malformed token costs
|
|
3214
|
+
* neither a key fetch nor a signature check.
|
|
3215
|
+
*
|
|
3216
|
+
* @param logoutToken - The raw `logout_token` the server posted.
|
|
3217
|
+
* @returns The token's claims.
|
|
3218
|
+
* @throws {InvalidLogoutTokenError} When the token is not valid.
|
|
3219
|
+
*/
|
|
3220
|
+
async validateLogoutToken(logoutToken) {
|
|
3221
|
+
const malformed = new InvalidLogoutTokenError("JS-AUTH_HELPER-VLT-IV01", "The logout token is not a signed JWT.");
|
|
3222
|
+
if (typeof logoutToken !== "string" || logoutToken.split(".").length !== 3) throw malformed;
|
|
3223
|
+
const configData = await this.config();
|
|
3224
|
+
const { issuer } = await this.oidcProviderMetaData();
|
|
3225
|
+
const clockTolerance = configData.tokenValidation?.idToken?.clockTolerance ?? BackchannelLogoutConstants_default.DEFAULT_CLOCK_TOLERANCE_SECONDS;
|
|
3226
|
+
let header;
|
|
3227
|
+
let payload;
|
|
3228
|
+
try {
|
|
3229
|
+
header = this.cryptoHelper.decodeJwtHeader(logoutToken);
|
|
3230
|
+
payload = this.cryptoHelper.decodeJwtToken(logoutToken);
|
|
3231
|
+
} catch {
|
|
3232
|
+
throw malformed;
|
|
3233
|
+
}
|
|
3234
|
+
const claims = validateLogoutTokenClaims_default(header, payload, {
|
|
3235
|
+
clientId: configData.clientId ?? "",
|
|
3236
|
+
clockTolerance,
|
|
3237
|
+
issuer: issuer ?? "",
|
|
3238
|
+
supportedAlgorithms: TokenConstants_default.SignatureValidation.SUPPORTED_ALGORITHMS
|
|
3239
|
+
});
|
|
3240
|
+
await this.cryptoHelper.verifyLogoutTokenSignature(logoutToken, await this.getCachedJwk(header["kid"]), configData.clientId ?? "", issuer ?? "", claims.sub, clockTolerance);
|
|
3241
|
+
return claims;
|
|
3242
|
+
}
|
|
3243
|
+
/**
|
|
3244
|
+
* Returns the server key with the given identifier from a cached key set. An unknown identifier
|
|
3245
|
+
* triggers one re-fetch, to follow key rotation, no more often than the minimum interval: the
|
|
3246
|
+
* logout endpoint is unauthenticated, so an unbounded re-fetch would let anyone drive requests
|
|
3247
|
+
* to the server. Requests that arrive while a fetch runs share it.
|
|
3248
|
+
*/
|
|
3249
|
+
async getCachedJwk(kid) {
|
|
3250
|
+
const now = Date.now();
|
|
3251
|
+
const find = (keys) => keys.find((key) => key.kid === kid);
|
|
3252
|
+
const fresh = this.jwksCache !== void 0 && now - this.jwksCache.fetchedAt < BackchannelLogoutConstants_default.JWKS_CACHE_TTL_MS;
|
|
3253
|
+
let jwk = fresh ? find(this.jwksCache.keys) : void 0;
|
|
3254
|
+
if (!jwk && (this.jwksFetch || now - this.jwksFetchStartedAt >= BackchannelLogoutConstants_default.JWKS_MIN_REFETCH_INTERVAL_MS)) jwk = find(await this.fetchJwksOnce());
|
|
3255
|
+
else if (!jwk && !fresh) throw new ThunderIDAuthException("JS-AUTH_HELPER-GCJ-NA02", "The server keys are not available.", "The server key set could not be fetched recently, and the cached one has expired.");
|
|
3256
|
+
if (!jwk) throw new InvalidLogoutTokenError("JS-AUTH_HELPER-GCJ-NF01", "The logout token names a key the server does not publish.");
|
|
3257
|
+
return jwk;
|
|
3258
|
+
}
|
|
3259
|
+
/**
|
|
3260
|
+
* Fetches the key set unless a fetch is already running, in which case that one is shared.
|
|
3261
|
+
*/
|
|
3262
|
+
fetchJwksOnce() {
|
|
3263
|
+
if (!this.jwksFetch) {
|
|
3264
|
+
this.jwksFetchStartedAt = Date.now();
|
|
3265
|
+
this.jwksFetch = this.fetchJwks().then((keys) => {
|
|
3266
|
+
this.jwksCache = {
|
|
3267
|
+
fetchedAt: Date.now(),
|
|
3268
|
+
keys
|
|
3269
|
+
};
|
|
3270
|
+
return keys;
|
|
3271
|
+
}).finally(() => {
|
|
3272
|
+
this.jwksFetch = void 0;
|
|
3273
|
+
});
|
|
3274
|
+
}
|
|
3275
|
+
return this.jwksFetch;
|
|
3276
|
+
}
|
|
3277
|
+
/**
|
|
3278
|
+
* Fetches the server's JSON Web Key Set.
|
|
3279
|
+
*
|
|
3280
|
+
* @throws {ThunderIDAuthException} When the JWKS endpoint is missing or the request fails.
|
|
3281
|
+
*/
|
|
3282
|
+
async fetchJwks() {
|
|
3101
3283
|
const jwksEndpoint = (await this.storageManager.loadOpenIDProviderConfiguration()).jwks_uri;
|
|
3102
3284
|
const configData = await this.config();
|
|
3103
3285
|
if (!jwksEndpoint || jwksEndpoint.trim().length === 0) throw new ThunderIDAuthException("JS_AUTH_HELPER-VIT-NF01", "JWKS endpoint not found.", "No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.");
|
|
@@ -3108,10 +3290,8 @@ var AuthenticationHelper = class {
|
|
|
3108
3290
|
throw new ThunderIDAuthException("JS-AUTH_HELPER-VIT-NE02", "Request to jwks endpoint failed.", error$1 ?? "The request sent to get the jwks from the server failed.");
|
|
3109
3291
|
}
|
|
3110
3292
|
if (response.status !== 200 || !response.ok) throw new ThunderIDAuthException("JS-AUTH_HELPER-VIT-HE03", `Invalid response status received for jwks request (${response.statusText}).`, await response.json());
|
|
3111
|
-
const { issuer } = await this.oidcProviderMetaData();
|
|
3112
3293
|
const { keys } = await response.json();
|
|
3113
|
-
|
|
3114
|
-
return this.cryptoHelper.isValidIdToken(idToken, jwk, (await this.config()).clientId ?? "", issuer ?? "", this.cryptoHelper.decodeJwtToken(idToken).sub, (await this.config()).tokenValidation?.idToken?.clockTolerance, (await this.config()).tokenValidation?.idToken?.validateIssuer ?? true);
|
|
3294
|
+
return keys;
|
|
3115
3295
|
}
|
|
3116
3296
|
/**
|
|
3117
3297
|
* Extracts user information from a decoded ID token payload.
|
|
@@ -3516,6 +3696,14 @@ var ThunderIDJavaScriptClient = class {
|
|
|
3516
3696
|
async decodeJwtToken(token) {
|
|
3517
3697
|
return this.cryptoHelper.decodeJwtToken(token);
|
|
3518
3698
|
}
|
|
3699
|
+
/**
|
|
3700
|
+
* Validates a back-channel logout token and returns its claims. Protected, because only an SDK
|
|
3701
|
+
* that runs on a server can receive one; such an SDK builds its logout handler on this.
|
|
3702
|
+
*/
|
|
3703
|
+
async validateLogoutToken(logoutToken) {
|
|
3704
|
+
await this.loadOpenIDProviderConfiguration(false);
|
|
3705
|
+
return this.authHelper.validateLogoutToken(logoutToken);
|
|
3706
|
+
}
|
|
3519
3707
|
async exchangeToken(config, sessionId) {
|
|
3520
3708
|
if (!await this.storageManager.getTemporaryDataParameter(OIDCDiscoveryConstants_default.Storage.StorageKeys.OPENID_PROVIDER_CONFIG_INITIATED)) await this.loadOpenIDProviderConfiguration(false);
|
|
3521
3709
|
const oidcProviderMetadata = await this.oidcProviderMetaDataProvider();
|
|
@@ -5324,6 +5512,40 @@ function resolveFlowTemplateLiterals(text, { t, meta }) {
|
|
|
5324
5512
|
});
|
|
5325
5513
|
}
|
|
5326
5514
|
|
|
5515
|
+
//#endregion
|
|
5516
|
+
//#region src/utils/parseKeyValuePairs.ts
|
|
5517
|
+
/**
|
|
5518
|
+
* Reads the label and value pairs a KEY_VALUE_LIST renders from the raw value found under its
|
|
5519
|
+
* `source` key in `additionalData`. The server publishes them as a JSON-encoded array, since
|
|
5520
|
+
* additional data carries strings, so both an array and its encoding are accepted.
|
|
5521
|
+
*
|
|
5522
|
+
* Entries that are not objects, or that carry no value, are dropped, since an empty row tells the
|
|
5523
|
+
* user nothing. Anything that is not a list of pairs yields none.
|
|
5524
|
+
*
|
|
5525
|
+
* @param raw - The raw value found under the source key.
|
|
5526
|
+
* @returns The pairs to render, empty when the value holds none.
|
|
5527
|
+
*
|
|
5528
|
+
* @example
|
|
5529
|
+
* ```typescript
|
|
5530
|
+
* parseKeyValuePairs('[{"label":"Email","value":"a@b.com"}]'); // [{label: 'Email', value: 'a@b.com'}]
|
|
5531
|
+
* parseKeyValuePairs('not json'); // []
|
|
5532
|
+
* ```
|
|
5533
|
+
*/
|
|
5534
|
+
const parseKeyValuePairs = (raw) => {
|
|
5535
|
+
let parsed = raw;
|
|
5536
|
+
if (typeof raw === "string") try {
|
|
5537
|
+
parsed = JSON.parse(raw);
|
|
5538
|
+
} catch {
|
|
5539
|
+
return [];
|
|
5540
|
+
}
|
|
5541
|
+
if (!Array.isArray(parsed)) return [];
|
|
5542
|
+
return parsed.filter((entry) => typeof entry === "object" && entry !== null && !Array.isArray(entry)).map((entry) => ({
|
|
5543
|
+
label: typeof entry["label"] === "string" ? entry["label"] : "",
|
|
5544
|
+
value: typeof entry["value"] === "string" ? entry["value"] : ""
|
|
5545
|
+
})).filter((pair) => pair.value !== "");
|
|
5546
|
+
};
|
|
5547
|
+
var parseKeyValuePairs_default = parseKeyValuePairs;
|
|
5548
|
+
|
|
5327
5549
|
//#endregion
|
|
5328
5550
|
//#region src/utils/countryCodeToFlagEmoji.ts
|
|
5329
5551
|
/**
|
|
@@ -5518,7 +5740,7 @@ const DEFAULT_VALIDATION_MESSAGE_KEYS = {
|
|
|
5518
5740
|
* - Unknown rule types are treated as passing (forward compatibility with future types).
|
|
5519
5741
|
*/
|
|
5520
5742
|
const evaluateValidationRule = (rule, value) => {
|
|
5521
|
-
const fail = () => rule.message ?? DEFAULT_VALIDATION_MESSAGE_KEYS[rule.type];
|
|
5743
|
+
const fail$1 = () => rule.message ?? DEFAULT_VALIDATION_MESSAGE_KEYS[rule.type];
|
|
5522
5744
|
switch (rule.type) {
|
|
5523
5745
|
case "regex": {
|
|
5524
5746
|
if (typeof rule.value !== "string" || rule.value === "") return null;
|
|
@@ -5528,14 +5750,14 @@ const evaluateValidationRule = (rule, value) => {
|
|
|
5528
5750
|
} catch {
|
|
5529
5751
|
return null;
|
|
5530
5752
|
}
|
|
5531
|
-
return re.test(value) ? null : fail();
|
|
5753
|
+
return re.test(value) ? null : fail$1();
|
|
5532
5754
|
}
|
|
5533
5755
|
case "minLength":
|
|
5534
5756
|
if (typeof rule.value !== "number" || Number.isNaN(rule.value)) return null;
|
|
5535
|
-
return value.length >= rule.value ? null : fail();
|
|
5757
|
+
return value.length >= rule.value ? null : fail$1();
|
|
5536
5758
|
case "maxLength":
|
|
5537
5759
|
if (typeof rule.value !== "number" || Number.isNaN(rule.value)) return null;
|
|
5538
|
-
return value.length <= rule.value ? null : fail();
|
|
5760
|
+
return value.length <= rule.value ? null : fail$1();
|
|
5539
5761
|
default: return null;
|
|
5540
5762
|
}
|
|
5541
5763
|
};
|
|
@@ -5821,6 +6043,7 @@ const en_US = {
|
|
|
5821
6043
|
"errors.signup.initialization": "An error occurred while initializing. Please try again later.",
|
|
5822
6044
|
"errors.signup.flow.failure": "An error occurred during the sign-up flow. Please try again later.",
|
|
5823
6045
|
"errors.signup.flow.initialization.failure": "An error occurred while initializing the sign-up flow. Please try again later.",
|
|
6046
|
+
"errors.signup.popup.failure": "Could not continue the sign-up in the pop-up window. Please try again.",
|
|
5824
6047
|
"errors.signup.components.not.available": "Sign-up form is not available at the moment. Please try again later."
|
|
5825
6048
|
}
|
|
5826
6049
|
};
|
|
@@ -5953,6 +6176,7 @@ const fr_FR = {
|
|
|
5953
6176
|
"errors.signup.initialization": "Une erreur est survenue lors de l'initialisation. Veuillez réessayer plus tard.",
|
|
5954
6177
|
"errors.signup.flow.failure": "Une erreur est survenue lors du flux d'inscription. Veuillez réessayer plus tard.",
|
|
5955
6178
|
"errors.signup.flow.initialization.failure": "Une erreur est survenue lors de l'initialisation du flux d'inscription. Veuillez réessayer plus tard.",
|
|
6179
|
+
"errors.signup.popup.failure": "Impossible de poursuivre l'inscription dans la fenêtre contextuelle. Veuillez réessayer.",
|
|
5956
6180
|
"errors.signup.components.not.available": "Le formulaire d'inscription n'est pas disponible pour le moment. Veuillez réessayer plus tard.",
|
|
5957
6181
|
"errors.signin.components.not.available": "Le formulaire de connexion n'est pas disponible pour le moment. Veuillez réessayer plus tard.",
|
|
5958
6182
|
"errors.signin.timeout": "Le temps imparti pour effectuer cette e'tape est expire'."
|
|
@@ -6087,6 +6311,7 @@ const te_IN = {
|
|
|
6087
6311
|
"errors.signup.initialization": "ప్రారంభించేటప్పుడు లోపం వచ్చింది. దయచేసి తరువాత మళ్లీ ప్రయత్నించండి.",
|
|
6088
6312
|
"errors.signup.flow.failure": "సైన్ అప్ ప్రక్రియలో లోపం వచ్చింది. దయచేసి తరువాత మళ్లీ ప్రయత్నించండి.",
|
|
6089
6313
|
"errors.signup.flow.initialization.failure": "సైన్ అప్ ప్రక్రియను ప్రారంభించేటప్పుడు లోపం వచ్చింది. దయచేసి తరువాత మళ్లీ ప్రయత్నించండి.",
|
|
6314
|
+
"errors.signup.popup.failure": "పాప్-అప్ విండోలో సైన్ అప్ కొనసాగించడం సాధ్యం కాలేదు. దయచేసి మళ్లీ ప్రయత్నించండి.",
|
|
6090
6315
|
"errors.signup.components.not.available": "సైన్ అప్ ఫారం ప్రస్తుతం అందుబాటులో లేదు. దయచేసి తరువాత మళ్లీ ప్రయత్నించండి.",
|
|
6091
6316
|
"errors.signin.components.not.available": "సైన్ ఇన్ ఫారం ప్రస్తుతం అందుబాటులో లేదు. దయచేసి తరువాత మళ్లీ ప్రయత్నించండి.",
|
|
6092
6317
|
"errors.signin.timeout": "దశను పూర్తి చేయడానికి అనుమతించబడిన సమయం ముగిసింది."
|
|
@@ -6221,6 +6446,7 @@ const hi_IN = {
|
|
|
6221
6446
|
"errors.signup.initialization": "प्रारंभीकरण के दौरान एक त्रुटि हुई। कृपया बाद में पुनः प्रयास करें।",
|
|
6222
6447
|
"errors.signup.flow.failure": "साइन-अप प्रक्रिया में त्रुटि। कृपया बाद में पुनः प्रयास करें।",
|
|
6223
6448
|
"errors.signup.flow.initialization.failure": "साइन-अप प्रक्रिया प्रारंभ करते समय त्रुटि। कृपया बाद में पुनः प्रयास करें।",
|
|
6449
|
+
"errors.signup.popup.failure": "पॉप-अप विंडो में साइन-अप जारी नहीं रखा जा सका। कृपया पुनः प्रयास करें।",
|
|
6224
6450
|
"errors.signup.components.not.available": "साइन-अप फॉर्म फिलहाल उपलब्ध नहीं है। कृपया बाद में पुनः प्रयास करें।",
|
|
6225
6451
|
"errors.signin.components.not.available": "साइन-इन फॉर्म फिलहाल उपलब्ध नहीं है। कृपया बाद में पुनः प्रयास करें।",
|
|
6226
6452
|
"errors.signin.timeout": "स्टेप पूरा करने के लिए दिया गया समय खत्म हो गया है।"
|
|
@@ -6355,6 +6581,7 @@ const pt_BR = {
|
|
|
6355
6581
|
"errors.signup.initialization": "Ocorreu um erro durante a inicialização. Tente novamente mais tarde.",
|
|
6356
6582
|
"errors.signup.flow.failure": "Ocorreu um erro durante o fluxo de cadastro. Tente novamente mais tarde.",
|
|
6357
6583
|
"errors.signup.flow.initialization.failure": "Ocorreu um erro ao inicializar o fluxo de cadastro. Tente novamente mais tarde.",
|
|
6584
|
+
"errors.signup.popup.failure": "Não foi possível continuar o cadastro na janela pop-up. Tente novamente.",
|
|
6358
6585
|
"errors.signup.components.not.available": "O formulário de cadastro não está disponível no momento. Tente novamente mais tarde.",
|
|
6359
6586
|
"errors.signin.components.not.available": "O formulário de login não está disponível no momento. Tente novamente mais tarde.",
|
|
6360
6587
|
"errors.signin.timeout": "O tempo permitido para concluir a etapa expirou."
|
|
@@ -6489,6 +6716,7 @@ const pt_PT = {
|
|
|
6489
6716
|
"errors.signup.initialization": "Ocorreu um erro durante a inicialização. Tente novamente mais tarde.",
|
|
6490
6717
|
"errors.signup.flow.failure": "Ocorreu um erro durante o fluxo de registo. Tente novamente mais tarde.",
|
|
6491
6718
|
"errors.signup.flow.initialization.failure": "Ocorreu um erro ao inicializar o fluxo de registo. Tente novamente mais tarde.",
|
|
6719
|
+
"errors.signup.popup.failure": "Não foi possível continuar o registo na janela pop-up. Tente novamente.",
|
|
6492
6720
|
"errors.signup.components.not.available": "O formulário de registo não está disponível de momento. Tente novamente mais tarde.",
|
|
6493
6721
|
"errors.signin.components.not.available": "O formulário de início de sessão não está disponível de momento. Tente novamente mais tarde.",
|
|
6494
6722
|
"errors.signin.timeout": "O tempo permitido para completar a etapa expirou."
|
|
@@ -6623,6 +6851,7 @@ const ta_IN = {
|
|
|
6623
6851
|
"errors.signup.initialization": "தொடங்கும்போது பிழை ஏற்பட்டது. பின்னர் மீண்டும் முயற்சிக்கவும்.",
|
|
6624
6852
|
"errors.signup.flow.failure": "பதிவு செய்யும் செயல்பாட்டில் பிழை ஏற்பட்டது. பின்னர் மீண்டும் முயற்சிக்கவும்.",
|
|
6625
6853
|
"errors.signup.flow.initialization.failure": "பதிவு செய்யும் செயல்பாட்டை தொடங்கும்போது பிழை ஏற்பட்டது. பின்னர் மீண்டும் முயற்சிக்கவும்.",
|
|
6854
|
+
"errors.signup.popup.failure": "பாப்-அப் சாளரத்தில் பதிவைத் தொடர முடியவில்லை. மீண்டும் முயற்சிக்கவும்.",
|
|
6626
6855
|
"errors.signup.components.not.available": "பதிவு படிவம் இப்போது கிடைக்கவில்லை. பின்னர் மீண்டும் முயற்சிக்கவும்.",
|
|
6627
6856
|
"errors.signin.components.not.available": "உள்நுழைவு படிவம் இப்போது கிடைக்கவில்லை. பின்னர் மீண்டும் முயற்சிக்கவும்.",
|
|
6628
6857
|
"errors.signin.timeout": "படிநிலையை முடிக்க அனுமதிக்கப்பட்ட நேரம் காலாவதியானது."
|
|
@@ -6757,6 +6986,7 @@ const si_LK = {
|
|
|
6757
6986
|
"errors.signup.initialization": "ආරම්භ කිරීමේදී දෝෂයක් සිදු විය. කරුණාකර පසුව නැවත උත්සාහ කරන්න.",
|
|
6758
6987
|
"errors.signup.flow.failure": "ගිණුම් තැනීමේ ක්රියාවලියේදී දෝෂයක් සිදු විය. කරුණාකර පසුව නැවත උත්සාහ කරන්න.",
|
|
6759
6988
|
"errors.signup.flow.initialization.failure": "ගිණුම් තැනීමේ ක්රියාවලිය ආරම්භ කිරීමේදී දෝෂයක් සිදු විය. කරුණාකර පසුව නැවත උත්සාහ කරන්න.",
|
|
6989
|
+
"errors.signup.popup.failure": "උත්පතන කවුළුවේ ගිණුම් තැනීම දිගටම කරගෙන යා නොහැකි විය. කරුණාකර නැවත උත්සාහ කරන්න.",
|
|
6760
6990
|
"errors.signup.components.not.available": "ගිණුම් තැනීමේ පිටුව දැන් ලබා ගත නොහැකිය. කරුණාකර පසුව නැවත උත්සාහ කරන්න.",
|
|
6761
6991
|
"errors.signin.components.not.available": "ප්රවේශ වීමේ පිටුව දැන් ලබා ගත නොහැකිය. කරුණාකර පසුව නැවත උත්සාහ කරන්න.",
|
|
6762
6992
|
"errors.signin.timeout": "පියවර සම්පූර්ණ කිරීමට ලබා දී තිබූ කාලය ඉකුත් වී ඇත."
|
|
@@ -6857,6 +7087,7 @@ exports.AgentQueryKeys = AgentQueryKeys_default;
|
|
|
6857
7087
|
exports.ApplicationNativeAuthenticationConstants = ApplicationNativeAuthenticationConstants_default;
|
|
6858
7088
|
exports.ApplicationQueryKeys = ApplicationQueryKeys_default;
|
|
6859
7089
|
exports.AuthenticationHelper = AuthenticationHelper_default;
|
|
7090
|
+
exports.BackchannelLogoutConstants = BackchannelLogoutConstants_default;
|
|
6860
7091
|
exports.ConsentConstants = ConsentConstants_default;
|
|
6861
7092
|
exports.CredentialConstants = CredentialConstants_default;
|
|
6862
7093
|
exports.DEFAULT_THEME = DEFAULT_THEME;
|
|
@@ -6879,6 +7110,7 @@ exports.FlowMetaType = FlowMetaType;
|
|
|
6879
7110
|
exports.FlowMode = FlowMode;
|
|
6880
7111
|
exports.HttpClient = HttpClient;
|
|
6881
7112
|
exports.InboundAuthTypes = InboundAuthTypes;
|
|
7113
|
+
exports.InvalidLogoutTokenError = InvalidLogoutTokenError;
|
|
6882
7114
|
exports.IsomorphicCrypto = IsomorphicCrypto;
|
|
6883
7115
|
exports.OAuth2GrantTypes = OAuth2GrantTypes;
|
|
6884
7116
|
exports.OAuth2ResponseTypes = OAuth2ResponseTypes;
|
|
@@ -6953,6 +7185,7 @@ exports.logger = logger_default;
|
|
|
6953
7185
|
exports.mapCredentialUpdateError = mapCredentialUpdateError_default;
|
|
6954
7186
|
exports.normalizeLocaleTag = normalizeLocaleTag;
|
|
6955
7187
|
exports.normalizeTranslations = normalizeTranslations_default;
|
|
7188
|
+
exports.parseKeyValuePairs = parseKeyValuePairs_default;
|
|
6956
7189
|
exports.processOpenIDScopes = processOpenIDScopes_default;
|
|
6957
7190
|
exports.removeTrailingSlash = removeTrailingSlash_default;
|
|
6958
7191
|
exports.resolveChangeCredentialPolicy = resolveChangeCredentialPolicy_default;
|
|
@@ -6971,5 +7204,6 @@ exports.updateApplication = updateApplication_default;
|
|
|
6971
7204
|
exports.updateMeCredentials = updateMeCredentials_default;
|
|
6972
7205
|
exports.updateMeProfile = updateMeProfile_default;
|
|
6973
7206
|
exports.updateUser = updateUser_default;
|
|
7207
|
+
exports.validateLogoutTokenClaims = validateLogoutTokenClaims_default;
|
|
6974
7208
|
exports.warn = warn;
|
|
6975
7209
|
exports.withVendorCSSClassPrefix = withVendorCSSClassPrefix_default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants for OpenID Connect Back-Channel Logout 1.0, for an SDK that receives logout tokens.
|
|
3
|
+
*/
|
|
4
|
+
declare const BackchannelLogoutConstants: {
|
|
5
|
+
readonly DEFAULT_CLOCK_TOLERANCE_SECONDS: number;
|
|
6
|
+
readonly EVENT: string;
|
|
7
|
+
readonly JWKS_CACHE_TTL_MS: number;
|
|
8
|
+
readonly JWKS_MIN_REFETCH_INTERVAL_MS: number;
|
|
9
|
+
readonly TOKEN_PARAM: string;
|
|
10
|
+
readonly TOKEN_TYPE: string;
|
|
11
|
+
};
|
|
12
|
+
export default BackchannelLogoutConstants;
|
|
13
|
+
//# sourceMappingURL=BackchannelLogoutConstants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackchannelLogoutConstants.d.ts","sourceRoot":"","sources":["../../src/constants/BackchannelLogoutConstants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,QAAA,MAAM,0BAA0B,EAAE;IAChC,QAAQ,CAAC,+BAA+B,EAAE,MAAM,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAU7B,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|