oidc-spa 10.3.0-rc.3 → 11.0.0-rc.2
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 +0 -24
- package/core/Oidc.d.ts +12 -22
- package/core/createGetUser.d.ts +3 -1
- package/core/createGetUser.js +21 -11
- package/core/createGetUser.js.map +1 -1
- package/core/createMockOidc.d.ts +15 -8
- package/core/createMockOidc.js +33 -23
- package/core/createMockOidc.js.map +1 -1
- package/core/createOidc.d.ts +9 -12
- package/core/createOidc.js +11 -8
- package/core/createOidc.js.map +1 -1
- package/core/index.d.ts +2 -0
- package/core/oidcClientTsUserToTokens.d.ts +2 -6
- package/core/oidcClientTsUserToTokens.js +10 -35
- package/core/oidcClientTsUserToTokens.js.map +1 -1
- package/esm/angular/createOidcSpaUtils.d.ts +7 -0
- package/esm/angular/createOidcSpaUtils.mjs +494 -0
- package/esm/angular/createOidcSpaUtils.mjs.map +1 -0
- package/esm/angular/index.d.ts +3 -0
- package/esm/angular/index.mjs +2 -0
- package/esm/angular/index.mjs.map +1 -0
- package/esm/angular/types.d.ts +354 -0
- package/esm/angular/types.mjs +7 -0
- package/esm/angular/types.mjs.map +1 -0
- package/esm/angular/utilsBuilder.d.ts +11 -0
- package/esm/angular/utilsBuilder.mjs +36 -0
- package/esm/angular/utilsBuilder.mjs.map +1 -0
- package/esm/core/Oidc.d.ts +12 -22
- package/esm/core/createGetUser.d.ts +3 -1
- package/esm/core/createGetUser.mjs +21 -11
- package/esm/core/createGetUser.mjs.map +1 -1
- package/esm/core/createMockOidc.d.ts +15 -8
- package/esm/core/createMockOidc.mjs +32 -23
- package/esm/core/createMockOidc.mjs.map +1 -1
- package/esm/core/createOidc.d.ts +9 -12
- package/esm/core/createOidc.mjs +11 -8
- package/esm/core/createOidc.mjs.map +1 -1
- package/esm/core/index.d.ts +2 -0
- package/esm/core/oidcClientTsUserToTokens.d.ts +2 -6
- package/esm/core/oidcClientTsUserToTokens.mjs +10 -35
- package/esm/core/oidcClientTsUserToTokens.mjs.map +1 -1
- package/esm/keycloak/index.d.ts +2 -1
- package/esm/keycloak/index.mjs.map +1 -1
- package/esm/keycloak/keycloak-js/Keycloak.mjs +10 -10
- package/esm/keycloak/keycloak-js/Keycloak.mjs.map +1 -1
- package/esm/keycloak/keycloak-js/keycloak-authz.mjs +2 -2
- package/esm/keycloak/keycloak-js/keycloak-authz.mjs.map +1 -1
- package/esm/keycloak/keycloakUtils.d.ts +2 -5
- package/esm/keycloak/keycloakUtils.mjs.map +1 -1
- package/esm/react-nextjs/adaptOidcSpaUtils.d.ts +3 -0
- package/esm/react-nextjs/adaptOidcSpaUtils.mjs +43 -0
- package/esm/react-nextjs/adaptOidcSpaUtils.mjs.map +1 -0
- package/esm/react-nextjs/index.d.ts +12 -0
- package/esm/react-nextjs/index.mjs +20 -0
- package/esm/react-nextjs/index.mjs.map +1 -0
- package/esm/react-nextjs/types.d.ts +3 -0
- package/esm/react-nextjs/types.mjs +2 -0
- package/esm/react-nextjs/types.mjs.map +1 -0
- package/esm/react-spa/createOidcSpaUtils.d.ts +2 -6
- package/esm/react-spa/createOidcSpaUtils.mjs +17 -84
- package/esm/react-spa/createOidcSpaUtils.mjs.map +1 -1
- package/esm/react-spa/index.d.ts +1 -1
- package/esm/react-spa/types.d.ts +37 -40
- package/esm/react-spa/types.mjs +4 -0
- package/esm/react-spa/types.mjs.map +1 -1
- package/esm/react-spa/utilsBuilder.d.ts +5 -11
- package/esm/react-spa/utilsBuilder.mjs +0 -17
- package/esm/react-spa/utilsBuilder.mjs.map +1 -1
- package/esm/server/createUtils.d.ts +5 -0
- package/esm/server/createUtils.mjs +762 -0
- package/esm/server/createUtils.mjs.map +1 -0
- package/esm/server/extractRequestAuthContext.d.ts +3 -2
- package/esm/server/extractRequestAuthContext.mjs +1 -1
- package/esm/server/extractRequestAuthContext.mjs.map +1 -1
- package/esm/server/index.d.ts +2 -2
- package/esm/server/index.mjs +1 -2
- package/esm/server/index.mjs.map +1 -1
- package/esm/server/oidcSpa.d.ts +8 -0
- package/esm/server/oidcSpa.mjs +13 -0
- package/esm/server/oidcSpa.mjs.map +1 -0
- package/esm/server/tools/fetchIntrospectionEndpoint.d.ts +3 -0
- package/esm/server/tools/fetchIntrospectionEndpoint.mjs +39 -0
- package/esm/server/tools/fetchIntrospectionEndpoint.mjs.map +1 -0
- package/esm/server/tools/fetchPublicSigningKeys.d.ts +8 -0
- package/esm/server/tools/fetchPublicSigningKeys.mjs +94 -0
- package/esm/server/tools/fetchPublicSigningKeys.mjs.map +1 -0
- package/esm/server/types.d.ts +50 -47
- package/esm/tanstack-start/react/createOidcSpaUtils.d.ts +5 -10
- package/esm/tanstack-start/react/createOidcSpaUtils.mjs +279 -257
- package/esm/tanstack-start/react/createOidcSpaUtils.mjs.map +1 -1
- package/esm/tanstack-start/react/index.d.ts +1 -1
- package/esm/tanstack-start/react/index.mjs +1 -2
- package/esm/tanstack-start/react/index.mjs.map +1 -1
- package/esm/tanstack-start/react/oidcSpa.d.ts +49 -0
- package/esm/tanstack-start/react/oidcSpa.mjs +36 -0
- package/esm/tanstack-start/react/oidcSpa.mjs.map +1 -0
- package/esm/tanstack-start/react/types.d.ts +262 -268
- package/esm/tanstack-start/react/types.mjs +2 -3
- package/esm/tanstack-start/react/types.mjs.map +1 -1
- package/esm/tools/OidcUserInfo.d.ts +30 -0
- package/esm/tools/OidcUserInfo.mjs +2 -0
- package/esm/tools/OidcUserInfo.mjs.map +1 -0
- package/esm/tools/areDeepEqual.d.ts +1 -0
- package/esm/tools/areDeepEqual.mjs +44 -0
- package/esm/tools/areDeepEqual.mjs.map +1 -0
- package/esm/vite-plugin/manageOptimizedDeps.mjs +2 -1
- package/esm/vite-plugin/manageOptimizedDeps.mjs.map +1 -1
- package/esm/vite-plugin/projectType.mjs +2 -2
- package/esm/vite-plugin/projectType.mjs.map +1 -1
- package/keycloak/index.d.ts +2 -1
- package/keycloak/index.js.map +1 -1
- package/keycloak/keycloak-js/Keycloak.js +10 -10
- package/keycloak/keycloak-js/Keycloak.js.map +1 -1
- package/keycloak/keycloak-js/keycloak-authz.js +2 -2
- package/keycloak/keycloak-js/keycloak-authz.js.map +1 -1
- package/keycloak/keycloakUtils.d.ts +2 -5
- package/keycloak/keycloakUtils.js.map +1 -1
- package/package.json +15 -5
- package/react-spa/createOidcSpaUtils.d.ts +2 -6
- package/react-spa/createOidcSpaUtils.js +16 -83
- package/react-spa/createOidcSpaUtils.js.map +1 -1
- package/react-spa/index.d.ts +1 -1
- package/react-spa/types.d.ts +37 -40
- package/react-spa/types.js +5 -0
- package/react-spa/types.js.map +1 -1
- package/react-spa/utilsBuilder.d.ts +5 -11
- package/react-spa/utilsBuilder.js +0 -17
- package/react-spa/utilsBuilder.js.map +1 -1
- package/server/createUtils.d.ts +5 -0
- package/server/createUtils.js +765 -0
- package/server/createUtils.js.map +1 -0
- package/server/extractRequestAuthContext.d.ts +3 -2
- package/server/extractRequestAuthContext.js +1 -1
- package/server/extractRequestAuthContext.js.map +1 -1
- package/server/index.d.ts +2 -2
- package/server/index.js +3 -3
- package/server/index.js.map +1 -1
- package/server/oidcSpa.d.ts +8 -0
- package/server/oidcSpa.js +16 -0
- package/server/oidcSpa.js.map +1 -0
- package/server/tools/fetchIntrospectionEndpoint.d.ts +3 -0
- package/server/tools/fetchIntrospectionEndpoint.js +42 -0
- package/server/tools/fetchIntrospectionEndpoint.js.map +1 -0
- package/server/tools/fetchPublicSigningKeys.d.ts +8 -0
- package/server/tools/fetchPublicSigningKeys.js +97 -0
- package/server/tools/fetchPublicSigningKeys.js.map +1 -0
- package/server/types.d.ts +50 -47
- package/src/angular/createOidcSpaUtils.ts +633 -0
- package/src/angular/index.ts +3 -0
- package/src/angular/types.ts +406 -0
- package/src/angular/utilsBuilder.ts +68 -0
- package/src/core/Oidc.ts +12 -30
- package/src/core/createGetUser.ts +38 -19
- package/src/core/createMockOidc.ts +62 -52
- package/src/core/createOidc.ts +26 -43
- package/src/core/index.ts +3 -0
- package/src/core/oidcClientTsUserToTokens.ts +21 -68
- package/src/keycloak/index.ts +2 -6
- package/src/keycloak/keycloak-js/Keycloak.ts +10 -10
- package/src/keycloak/keycloak-js/keycloak-authz.ts +2 -2
- package/src/keycloak/keycloakUtils.ts +2 -6
- package/src/react-nextjs/adaptOidcSpaUtils.tsx +64 -0
- package/src/react-nextjs/index.ts +53 -0
- package/src/react-nextjs/types.ts +4 -0
- package/src/react-spa/createOidcSpaUtils.ts +39 -148
- package/src/react-spa/types.ts +55 -49
- package/src/react-spa/utilsBuilder.ts +12 -73
- package/src/server/createUtils.ts +1015 -0
- package/src/server/extractRequestAuthContext.ts +6 -5
- package/src/server/index.ts +2 -4
- package/src/server/oidcSpa.ts +34 -0
- package/src/server/tools/fetchIntrospectionEndpoint.ts +57 -0
- package/src/server/tools/fetchPublicSigningKeys.ts +148 -0
- package/src/server/types.ts +68 -64
- package/src/tanstack-start/react/createOidcSpaUtils.ts +396 -394
- package/src/tanstack-start/react/index.ts +1 -3
- package/src/tanstack-start/react/oidcSpa.ts +68 -0
- package/src/tanstack-start/react/types.ts +290 -302
- package/src/tools/OidcUserInfo.ts +40 -0
- package/src/tools/areDeepEqual.ts +59 -0
- package/src/vite-plugin/manageOptimizedDeps.ts +2 -1
- package/src/vite-plugin/projectType.ts +2 -2
- package/tools/OidcUserInfo.d.ts +30 -0
- package/tools/OidcUserInfo.js +3 -0
- package/tools/OidcUserInfo.js.map +1 -0
- package/tools/areDeepEqual.d.ts +1 -0
- package/tools/areDeepEqual.js +47 -0
- package/tools/areDeepEqual.js.map +1 -0
- package/esm/angular.d.ts +0 -237
- package/esm/angular.mjs +0 -525
- package/esm/angular.mjs.map +0 -1
- package/esm/server/createOidcSpaUtils.d.ts +0 -5
- package/esm/server/createOidcSpaUtils.mjs +0 -641
- package/esm/server/createOidcSpaUtils.mjs.map +0 -1
- package/esm/server/utilsBuilder.d.ts +0 -10
- package/esm/server/utilsBuilder.mjs +0 -13
- package/esm/server/utilsBuilder.mjs.map +0 -1
- package/esm/tanstack-start/react/accessTokenValidation_rfc9068.d.ts +0 -15
- package/esm/tanstack-start/react/accessTokenValidation_rfc9068.mjs +0 -123
- package/esm/tanstack-start/react/accessTokenValidation_rfc9068.mjs.map +0 -1
- package/esm/tanstack-start/react/utilsBuilder.d.ts +0 -34
- package/esm/tanstack-start/react/utilsBuilder.mjs +0 -76
- package/esm/tanstack-start/react/utilsBuilder.mjs.map +0 -1
- package/server/createOidcSpaUtils.d.ts +0 -5
- package/server/createOidcSpaUtils.js +0 -644
- package/server/createOidcSpaUtils.js.map +0 -1
- package/server/utilsBuilder.d.ts +0 -10
- package/server/utilsBuilder.js +0 -16
- package/server/utilsBuilder.js.map +0 -1
- package/src/angular.ts +0 -913
- package/src/server/createOidcSpaUtils.ts +0 -863
- package/src/server/utilsBuilder.ts +0 -41
- package/src/tanstack-start/react/accessTokenValidation_rfc9068.ts +0 -178
- package/src/tanstack-start/react/utilsBuilder.ts +0 -188
package/README.md
CHANGED
|
@@ -158,27 +158,3 @@ Project backers, we trust and recommend their services.
|
|
|
158
158
|
<p align="center">
|
|
159
159
|
<i><a href="https://phasetwo.io/?utm_source=keycloakify"><strong>Keycloak as a Service</strong></a> — Keycloak community contributors of popular <a href="https://github.com/p2-inc#our-extensions-?utm_source=keycloakify">extensions</a> providing free and dedicated <a href="https://phasetwo.io/hosting/?utm_source=keycloakify">Keycloak hosting</a> and enterprise <a href="https://phasetwo.io/support/?utm_source=keycloakify">Keycloak support</a> to businesses of all sizes.</i>
|
|
160
160
|
</p>
|
|
161
|
-
|
|
162
|
-
<br/>
|
|
163
|
-
<br/>
|
|
164
|
-
<br/>
|
|
165
|
-
|
|
166
|
-
<div align="center">
|
|
167
|
-
|
|
168
|
-

|
|
169
|
-
|
|
170
|
-
</div>
|
|
171
|
-
|
|
172
|
-
<div align="center">
|
|
173
|
-
|
|
174
|
-

|
|
175
|
-
|
|
176
|
-
</div>
|
|
177
|
-
|
|
178
|
-
<br/>
|
|
179
|
-
|
|
180
|
-
<p align="center">
|
|
181
|
-
<a href="https://www.zone2.tech/services/keycloak-consulting">
|
|
182
|
-
<i><strong>Keycloak Consulting Services</strong> — Your partner in Keycloak deployment, configuration, and extension development for optimized identity management solutions.</i>
|
|
183
|
-
</a>
|
|
184
|
-
</p>
|
package/core/Oidc.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OidcInitializationError } from "./OidcInitializationError";
|
|
2
|
-
export declare type Oidc<
|
|
2
|
+
export declare type Oidc<User = never> = Oidc.LoggedIn<User> | Oidc.NotLoggedIn;
|
|
3
3
|
export declare namespace Oidc {
|
|
4
4
|
type Common = {
|
|
5
5
|
issuerUri: string;
|
|
@@ -25,20 +25,21 @@ export declare namespace Oidc {
|
|
|
25
25
|
* Transform the url before redirecting to the login pages.
|
|
26
26
|
* Prefer using the extraQueryParams parameter if you're only adding query parameters.
|
|
27
27
|
*/
|
|
28
|
-
transformUrlBeforeRedirect?: (
|
|
28
|
+
transformUrlBeforeRedirect?: (authorizationUrl: string) => string;
|
|
29
29
|
}) => Promise<never>;
|
|
30
30
|
initializationError: OidcInitializationError | undefined;
|
|
31
31
|
};
|
|
32
|
-
type LoggedIn<
|
|
32
|
+
type LoggedIn<User = never> = Common & {
|
|
33
33
|
isUserLoggedIn: true;
|
|
34
34
|
renewTokens(params?: {
|
|
35
35
|
extraTokenParams?: Record<string, string | undefined>;
|
|
36
36
|
}): Promise<void>;
|
|
37
|
-
|
|
38
|
-
subscribeToTokensChange: (onTokenChange: (tokens: Tokens<DecodedIdToken>) => void) => {
|
|
37
|
+
subscribeToTokensChange: (onTokenChange: (tokens: Tokens) => void) => {
|
|
39
38
|
unsubscribeFromTokensChange: () => void;
|
|
40
39
|
};
|
|
41
|
-
|
|
40
|
+
getTokens: () => Promise<Tokens>;
|
|
41
|
+
getDecodedIdToken: () => Tokens.DecodedIdToken;
|
|
42
|
+
getAccessToken: () => Promise<string>;
|
|
42
43
|
logout: (params: {
|
|
43
44
|
redirectTo: "home" | "current page";
|
|
44
45
|
} | {
|
|
@@ -92,41 +93,30 @@ export declare namespace Oidc {
|
|
|
92
93
|
refreshUser: () => Promise<User>;
|
|
93
94
|
}>;
|
|
94
95
|
};
|
|
95
|
-
type Tokens
|
|
96
|
+
type Tokens = Tokens.WithRefreshToken | Tokens.WithoutRefreshToken;
|
|
96
97
|
namespace Tokens {
|
|
97
|
-
type Common
|
|
98
|
+
type Common = {
|
|
98
99
|
accessToken: string;
|
|
99
100
|
/** Millisecond epoch in the server's time */
|
|
100
101
|
accessTokenExpirationTime: number;
|
|
101
102
|
idToken: string;
|
|
102
103
|
decodedIdToken: DecodedIdToken;
|
|
103
|
-
/**
|
|
104
|
-
* decodedIdToken_original = decodeJwt(idToken);
|
|
105
|
-
* decodedIdToken = decodedIdTokenSchema.parse(decodedIdToken_original)
|
|
106
|
-
*
|
|
107
|
-
* The idea here is that if you have provided a zod schema as `decodedIdTokenSchema`
|
|
108
|
-
* it will strip out every claim that you haven't specified.
|
|
109
|
-
* You might even be applying some transformation.
|
|
110
|
-
*
|
|
111
|
-
* `decodedIdToken_original` is the actual decoded payload of the id_token, untransformed.
|
|
112
|
-
* */
|
|
113
|
-
decodedIdToken_original: DecodedIdToken_OidcCoreSpec;
|
|
114
104
|
/** Millisecond epoch in the server's time, read from id_token's JWT, iat claim value */
|
|
115
105
|
issuedAtTime: number;
|
|
116
106
|
/** To use instead of Date.now() if you ever need to tell if a token is expired or not */
|
|
117
107
|
getServerDateNow: () => number;
|
|
118
108
|
};
|
|
119
|
-
type WithRefreshToken
|
|
109
|
+
type WithRefreshToken = Common & {
|
|
120
110
|
hasRefreshToken: true;
|
|
121
111
|
refreshToken: string;
|
|
122
112
|
refreshTokenExpirationTime: number | undefined;
|
|
123
113
|
};
|
|
124
|
-
type WithoutRefreshToken
|
|
114
|
+
type WithoutRefreshToken = Common & {
|
|
125
115
|
hasRefreshToken: false;
|
|
126
116
|
refreshToken?: never;
|
|
127
117
|
refreshTokenExpirationTime?: never;
|
|
128
118
|
};
|
|
129
|
-
type
|
|
119
|
+
type DecodedIdToken = {
|
|
130
120
|
iss: string;
|
|
131
121
|
sub: string;
|
|
132
122
|
aud: string | string[];
|
package/core/createGetUser.d.ts
CHANGED
|
@@ -3,8 +3,10 @@ import type { NonPostableEvt } from "../tools/Evt";
|
|
|
3
3
|
import type { ParamsOfCreateOidc } from "./createOidc";
|
|
4
4
|
export declare function createGetUser<User>(params: {
|
|
5
5
|
issuerUri: string;
|
|
6
|
+
clientId: string;
|
|
7
|
+
validRedirectUri: string;
|
|
6
8
|
createUser: ParamsOfCreateOidc.CreateUser<User> | undefined;
|
|
7
|
-
getCurrentTokens: () => Oidc.Tokens
|
|
9
|
+
getCurrentTokens: () => Oidc.Tokens;
|
|
8
10
|
evtTokensChange: NonPostableEvt<void>;
|
|
9
11
|
renewTokens(): Promise<void>;
|
|
10
12
|
oidcMetadata: {
|
package/core/createGetUser.js
CHANGED
|
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createGetUser = createGetUser;
|
|
4
4
|
const id_1 = require("../tools/tsafe/id");
|
|
5
5
|
const assert_1 = require("../tools/tsafe/assert");
|
|
6
|
+
const areDeepEqual_1 = require("../tools/areDeepEqual");
|
|
6
7
|
const decodeJwt_1 = require("../tools/decodeJwt");
|
|
7
8
|
function createGetUser(params) {
|
|
8
|
-
const { issuerUri, createUser, getCurrentTokens, evtTokensChange, renewTokens, oidcMetadata } = params;
|
|
9
|
+
const { issuerUri, clientId, validRedirectUri, createUser, getCurrentTokens, evtTokensChange, renewTokens, oidcMetadata } = params;
|
|
9
10
|
async function fetchUserInfo(params) {
|
|
10
11
|
const { accessToken } = params;
|
|
11
12
|
const { userinfo_endpoint } = oidcMetadata;
|
|
@@ -36,7 +37,7 @@ function createGetUser(params) {
|
|
|
36
37
|
const tokens = getCurrentTokens();
|
|
37
38
|
const hash_new = computeHash({
|
|
38
39
|
accessToken: tokens.accessToken,
|
|
39
|
-
decodedIdToken: tokens.
|
|
40
|
+
decodedIdToken: tokens.decodedIdToken
|
|
40
41
|
});
|
|
41
42
|
const prUser_new = (async () => {
|
|
42
43
|
const prUser_current = state?.prUser;
|
|
@@ -49,8 +50,10 @@ function createGetUser(params) {
|
|
|
49
50
|
try {
|
|
50
51
|
user_new = await createUser({
|
|
51
52
|
accessToken: tokens.accessToken,
|
|
52
|
-
decodedIdToken: tokens.
|
|
53
|
+
decodedIdToken: tokens.decodedIdToken,
|
|
53
54
|
issuerUri,
|
|
55
|
+
clientId,
|
|
56
|
+
validRedirectUri,
|
|
54
57
|
fetchUserInfo: () => fetchUserInfo({ accessToken: tokens.accessToken }),
|
|
55
58
|
user_current
|
|
56
59
|
});
|
|
@@ -68,6 +71,9 @@ function createGetUser(params) {
|
|
|
68
71
|
// higher level adapters.
|
|
69
72
|
throw error;
|
|
70
73
|
}
|
|
74
|
+
if (user_current !== undefined && (0, areDeepEqual_1.areDeepEqual)(user_new, user_current)) {
|
|
75
|
+
return user_current;
|
|
76
|
+
}
|
|
71
77
|
onUserChanges.forEach(onUserChange => onUserChange({
|
|
72
78
|
user: user_new,
|
|
73
79
|
user_previous: user_current
|
|
@@ -123,15 +129,19 @@ function createGetUser(params) {
|
|
|
123
129
|
};
|
|
124
130
|
setTimer();
|
|
125
131
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
132
|
+
try {
|
|
133
|
+
const user = await state.prUser;
|
|
134
|
+
return (0, id_1.id)({
|
|
135
|
+
user,
|
|
136
|
+
refreshUser,
|
|
137
|
+
subscribeToUserChange
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
if (timer_cycleDetection !== undefined) {
|
|
142
|
+
clearTimeout(timer_cycleDetection);
|
|
143
|
+
}
|
|
129
144
|
}
|
|
130
|
-
return (0, id_1.id)({
|
|
131
|
-
user,
|
|
132
|
-
refreshUser,
|
|
133
|
-
subscribeToUserChange
|
|
134
|
-
});
|
|
135
145
|
};
|
|
136
146
|
return { getUser };
|
|
137
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGetUser.js","sourceRoot":"","sources":["../src/core/createGetUser.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"createGetUser.js","sourceRoot":"","sources":["../src/core/createGetUser.ts"],"names":[],"mappings":"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"}
|
package/core/createMockOidc.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { Oidc } from "../core";
|
|
2
|
-
export type ParamsOfCreateMockOidc<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
export type ParamsOfCreateMockOidc<User, AutoLogin extends boolean> = {
|
|
3
|
+
user_mock?: User;
|
|
4
|
+
issuerUri_mock?: string;
|
|
5
|
+
clientId_mock?: string;
|
|
6
|
+
decodedIdToken_mock?: Oidc.Tokens.DecodedIdToken;
|
|
7
|
+
idToken_mock?: string;
|
|
8
|
+
accessToken_mock?: string;
|
|
9
|
+
accessTokenExpirationTime_mock?: number;
|
|
10
|
+
refreshToken_mock?: string;
|
|
11
|
+
refreshTokenExpirationTime_mock?: number;
|
|
9
12
|
/**
|
|
10
13
|
* The URL of the home page of your app.
|
|
11
14
|
* We need to know this so we know where to redirect when you call `logout({ redirectTo: "home"})`.
|
|
@@ -20,4 +23,8 @@ export type ParamsOfCreateMockOidc<DecodedIdToken extends Record<string, unknown
|
|
|
20
23
|
} : {
|
|
21
24
|
isUserInitiallyLoggedIn: boolean;
|
|
22
25
|
});
|
|
23
|
-
export declare
|
|
26
|
+
export declare const ClIENT_ID_MOCK_DEFAULT = "myclientmock";
|
|
27
|
+
export declare const ISSUER_URI_MOCK_DEFAULT = "https://auth.mycompany.com/realms/mymockrealm";
|
|
28
|
+
export declare const ACCESS_TOKEN_MOCK_DEFAULT = "mocked-access-token";
|
|
29
|
+
export declare const ID_TOKEN_MOCK_DEFAULT = "mocked-id-token";
|
|
30
|
+
export declare function createMockOidc<User = never, AutoLogin extends boolean = false>(params: ParamsOfCreateMockOidc<User, AutoLogin>): Promise<AutoLogin extends true ? Oidc.LoggedIn<User> : Oidc<User>>;
|
package/core/createMockOidc.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ID_TOKEN_MOCK_DEFAULT = exports.ACCESS_TOKEN_MOCK_DEFAULT = exports.ISSUER_URI_MOCK_DEFAULT = exports.ClIENT_ID_MOCK_DEFAULT = void 0;
|
|
3
4
|
exports.createMockOidc = createMockOidc;
|
|
4
5
|
const createObjectThatThrowsIfAccessed_1 = require("../tools/createObjectThatThrowsIfAccessed");
|
|
5
6
|
const id_1 = require("../tools/tsafe/id");
|
|
@@ -7,11 +8,16 @@ const toFullyQualifiedUrl_1 = require("../tools/toFullyQualifiedUrl");
|
|
|
7
8
|
const urlSearchParams_1 = require("../tools/urlSearchParams");
|
|
8
9
|
const earlyInit_rootRelativeOriginalLocationHref_1 = require("../core/earlyInit_rootRelativeOriginalLocationHref");
|
|
9
10
|
const INFINITY_TIME_1 = require("../tools/INFINITY_TIME");
|
|
10
|
-
const earlyInit_BASE_URL_1 = require("
|
|
11
|
+
const earlyInit_BASE_URL_1 = require("./earlyInit_BASE_URL");
|
|
12
|
+
const decodeJwt_1 = require("../tools/decodeJwt");
|
|
11
13
|
const URL_SEARCH_PARAM_NAME = "isUserLoggedIn";
|
|
12
14
|
const locationHref_moduleEvalTime = location.href;
|
|
15
|
+
exports.ClIENT_ID_MOCK_DEFAULT = "myclientmock";
|
|
16
|
+
exports.ISSUER_URI_MOCK_DEFAULT = "https://auth.mycompany.com/realms/mymockrealm";
|
|
17
|
+
exports.ACCESS_TOKEN_MOCK_DEFAULT = "mocked-access-token";
|
|
18
|
+
exports.ID_TOKEN_MOCK_DEFAULT = "mocked-id-token";
|
|
13
19
|
async function createMockOidc(params) {
|
|
14
|
-
const { isUserInitiallyLoggedIn = true,
|
|
20
|
+
const { user_mock, isUserInitiallyLoggedIn = true, issuerUri_mock, clientId_mock, decodedIdToken_mock, idToken_mock, accessToken_mock, accessTokenExpirationTime_mock, refreshToken_mock, refreshTokenExpirationTime_mock, autoLogin = false, postLoginRedirectUrl } = params;
|
|
15
21
|
const BASE_URL_params = params.BASE_URL;
|
|
16
22
|
const isUserLoggedIn = (() => {
|
|
17
23
|
const { wasPresent, value } = (0, urlSearchParams_1.getSearchParam)({
|
|
@@ -49,8 +55,8 @@ async function createMockOidc(params) {
|
|
|
49
55
|
doOutputWithTrailingSlash: true
|
|
50
56
|
});
|
|
51
57
|
const common = {
|
|
52
|
-
clientId:
|
|
53
|
-
issuerUri:
|
|
58
|
+
clientId: clientId_mock ?? exports.ClIENT_ID_MOCK_DEFAULT,
|
|
59
|
+
issuerUri: issuerUri_mock ?? exports.ISSUER_URI_MOCK_DEFAULT,
|
|
54
60
|
validRedirectUri: homeUrl
|
|
55
61
|
};
|
|
56
62
|
const loginOrGoToAuthServer = async (params) => {
|
|
@@ -95,32 +101,35 @@ async function createMockOidc(params) {
|
|
|
95
101
|
renewTokens: async () => { },
|
|
96
102
|
...(() => {
|
|
97
103
|
const tokens_common = {
|
|
98
|
-
accessToken:
|
|
99
|
-
accessTokenExpirationTime:
|
|
100
|
-
idToken:
|
|
101
|
-
decodedIdToken:
|
|
102
|
-
(
|
|
104
|
+
accessToken: accessToken_mock ?? exports.ACCESS_TOKEN_MOCK_DEFAULT,
|
|
105
|
+
accessTokenExpirationTime: accessTokenExpirationTime_mock ?? INFINITY_TIME_1.INFINITY_TIME,
|
|
106
|
+
idToken: idToken_mock ?? exports.ID_TOKEN_MOCK_DEFAULT,
|
|
107
|
+
decodedIdToken: (() => {
|
|
108
|
+
if (decodedIdToken_mock !== undefined) {
|
|
109
|
+
return decodedIdToken_mock;
|
|
110
|
+
}
|
|
111
|
+
if (idToken_mock !== undefined) {
|
|
112
|
+
try {
|
|
113
|
+
return (0, decodeJwt_1.decodeJwt)(idToken_mock);
|
|
114
|
+
}
|
|
115
|
+
catch { }
|
|
116
|
+
}
|
|
117
|
+
return (0, createObjectThatThrowsIfAccessed_1.createObjectThatThrowsIfAccessed)({
|
|
103
118
|
debugMessage: [
|
|
104
119
|
"You haven't provided a mocked decodedIdToken",
|
|
105
120
|
"See https://docs.oidc-spa.dev/v/v10/integration-guides/usage#mock-adapter"
|
|
106
121
|
].join("\n")
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
(0, createObjectThatThrowsIfAccessed_1.createObjectThatThrowsIfAccessed)({
|
|
110
|
-
debugMessage: [
|
|
111
|
-
"You haven't provided a mocked decodedIdToken_original",
|
|
112
|
-
"See https://docs.oidc-spa.dev/v/v10/integration-guides/usage#mock-adapter"
|
|
113
|
-
].join("\n")
|
|
114
|
-
}),
|
|
122
|
+
});
|
|
123
|
+
})(),
|
|
115
124
|
issuedAtTime: Date.now(),
|
|
116
125
|
getServerDateNow: () => Date.now()
|
|
117
126
|
};
|
|
118
|
-
const tokens =
|
|
127
|
+
const tokens = refreshToken_mock !== undefined
|
|
119
128
|
? (0, id_1.id)({
|
|
120
129
|
...tokens_common,
|
|
121
130
|
hasRefreshToken: true,
|
|
122
|
-
refreshToken:
|
|
123
|
-
refreshTokenExpirationTime:
|
|
131
|
+
refreshToken: refreshToken_mock,
|
|
132
|
+
refreshTokenExpirationTime: refreshTokenExpirationTime_mock ?? INFINITY_TIME_1.INFINITY_TIME
|
|
124
133
|
})
|
|
125
134
|
: (0, id_1.id)({
|
|
126
135
|
...tokens_common,
|
|
@@ -128,6 +137,7 @@ async function createMockOidc(params) {
|
|
|
128
137
|
});
|
|
129
138
|
return {
|
|
130
139
|
getTokens: () => Promise.resolve(tokens),
|
|
140
|
+
getAccessToken: () => Promise.resolve(tokens.accessToken),
|
|
131
141
|
getDecodedIdToken: () => tokens_common.decodedIdToken
|
|
132
142
|
};
|
|
133
143
|
})(),
|
|
@@ -167,15 +177,15 @@ async function createMockOidc(params) {
|
|
|
167
177
|
isNewBrowserSession: false,
|
|
168
178
|
backFromAuthServer: undefined,
|
|
169
179
|
getUser: () => {
|
|
170
|
-
if (
|
|
180
|
+
if (user_mock === undefined) {
|
|
171
181
|
throw new Error("oidc-spa: No mock user provided");
|
|
172
182
|
}
|
|
173
183
|
return Promise.resolve({
|
|
174
|
-
refreshUser: () => Promise.resolve(
|
|
184
|
+
refreshUser: () => Promise.resolve(user_mock),
|
|
175
185
|
subscribeToUserChange: () => {
|
|
176
186
|
return { unsubscribeFromUserChange: () => { } };
|
|
177
187
|
},
|
|
178
|
-
user:
|
|
188
|
+
user: user_mock
|
|
179
189
|
});
|
|
180
190
|
}
|
|
181
191
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMockOidc.js","sourceRoot":"","sources":["../src/core/createMockOidc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createMockOidc.js","sourceRoot":"","sources":["../src/core/createMockOidc.ts"],"names":[],"mappings":"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"}
|
package/core/createOidc.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ import type { Oidc } from "./Oidc";
|
|
|
4
4
|
import type { Evt } from "../tools/Evt";
|
|
5
5
|
import type { ParamsOfCreateGetServerDateNow } from "../tools/getServerDateNow";
|
|
6
6
|
import type { MaybeAsync } from "../tools/MaybeAsync";
|
|
7
|
-
|
|
7
|
+
import type { OidcUserInfo } from "../tools/OidcUserInfo";
|
|
8
|
+
export type ParamsOfCreateOidc<User, AutoLogin extends boolean> = {
|
|
8
9
|
createUser?: ParamsOfCreateOidc.CreateUser<User>;
|
|
9
10
|
/**
|
|
10
11
|
* See: https://docs.oidc-spa.dev/v/v10/providers-configuration/provider-configuration
|
|
@@ -54,9 +55,6 @@ export type ParamsOfCreateOidc<DecodedIdToken extends Record<string, unknown> =
|
|
|
54
55
|
* extraTokenParams: { selectedCustomer: "xxx" }
|
|
55
56
|
*/
|
|
56
57
|
extraTokenParams?: Record<string, string | undefined> | (() => Record<string, string | undefined>);
|
|
57
|
-
decodedIdTokenSchema?: {
|
|
58
|
-
parse: (decodedIdToken_original: Oidc.Tokens.DecodedIdToken_OidcCoreSpec) => DecodedIdToken;
|
|
59
|
-
};
|
|
60
58
|
/**
|
|
61
59
|
* This parameter defines after how many seconds of inactivity the user should be
|
|
62
60
|
* logged out automatically.
|
|
@@ -189,13 +187,12 @@ export type ParamsOfCreateOidc<DecodedIdToken extends Record<string, unknown> =
|
|
|
189
187
|
};
|
|
190
188
|
export declare namespace ParamsOfCreateOidc {
|
|
191
189
|
type CreateUser<User> = (params: {
|
|
192
|
-
decodedIdToken: Oidc.Tokens.
|
|
190
|
+
decodedIdToken: Oidc.Tokens.DecodedIdToken;
|
|
193
191
|
accessToken: string;
|
|
194
|
-
fetchUserInfo: () => Promise<
|
|
195
|
-
[key: string]: unknown;
|
|
196
|
-
sub: string;
|
|
197
|
-
}>;
|
|
192
|
+
fetchUserInfo: () => Promise<OidcUserInfo>;
|
|
198
193
|
issuerUri: string;
|
|
194
|
+
clientId: string;
|
|
195
|
+
validRedirectUri: string;
|
|
199
196
|
user_current: User | undefined;
|
|
200
197
|
}) => MaybeAsync<User>;
|
|
201
198
|
}
|
|
@@ -255,10 +252,10 @@ export declare namespace Exports_DPoP {
|
|
|
255
252
|
}
|
|
256
253
|
export declare function registerExports_DPoP(exports: Exports_DPoP): void;
|
|
257
254
|
/** @see: https://docs.oidc-spa.dev/v/v10/usage */
|
|
258
|
-
export declare function createOidc<
|
|
259
|
-
export declare function createOidc_nonMemoized<
|
|
255
|
+
export declare function createOidc<User = never, AutoLogin extends boolean = false>(params: ParamsOfCreateOidc<User, AutoLogin>): Promise<AutoLogin extends true ? Oidc.LoggedIn<User> : Oidc<User>>;
|
|
256
|
+
export declare function createOidc_nonMemoized<User, AutoLogin extends boolean>(params: Omit<ParamsOfCreateOidc<User, AutoLogin>, "issuerUri" | "clientId" | "debugLogs">, preProcessedParams: {
|
|
260
257
|
issuerUri: string;
|
|
261
258
|
clientId: string;
|
|
262
259
|
configId: string;
|
|
263
260
|
log: typeof console.log | undefined;
|
|
264
|
-
}): Promise<AutoLogin extends true ? Oidc.LoggedIn<
|
|
261
|
+
}): Promise<AutoLogin extends true ? Oidc.LoggedIn<User> : Oidc<User>>;
|
package/core/createOidc.js
CHANGED
|
@@ -77,7 +77,7 @@ const loadWebcryptoLinerShim_1 = require("../tools/loadWebcryptoLinerShim");
|
|
|
77
77
|
const lazySessionStorage_2 = require("../tools/lazySessionStorage");
|
|
78
78
|
const createGetUser_1 = require("./createGetUser");
|
|
79
79
|
// NOTE: Replaced at build time
|
|
80
|
-
const VERSION = "
|
|
80
|
+
const VERSION = "11.0.0-rc.2";
|
|
81
81
|
const globalContext = {
|
|
82
82
|
prOidcByConfigId: new Map(),
|
|
83
83
|
hasLogoutBeenCalled: (0, id_1.id)(false),
|
|
@@ -151,7 +151,7 @@ async function createOidc(params) {
|
|
|
151
151
|
return oidc;
|
|
152
152
|
}
|
|
153
153
|
async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
154
|
-
const { transformUrlBeforeRedirect, extraQueryParams: extraQueryParamsOrGetter, extraTokenParams: extraTokenParamsOrGetter,
|
|
154
|
+
const { transformUrlBeforeRedirect, extraQueryParams: extraQueryParamsOrGetter, extraTokenParams: extraTokenParamsOrGetter, idleSessionLifetimeInSeconds, autoLogoutParams = { redirectTo: "current page" }, autoLogin = false, postLoginRedirectUrl: postLoginRedirectUrl_default, __unsafe_clientSecret, __unsafe_useIdTokenAsAccessToken = false, __metadata, disableDPoP: disableDPoP_params = false, sessionRestorationMethod: sessionRestorationMethod_params, BASE_URL: BASE_URL_params, createUser } = params;
|
|
155
155
|
const exports_earlyInit = await (async () => {
|
|
156
156
|
const timer = window.setTimeout(() => {
|
|
157
157
|
console.warn([
|
|
@@ -882,15 +882,13 @@ async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
882
882
|
(0, assert_1.assert)(oidcMetadata !== undefined, "30483403");
|
|
883
883
|
const { oidcClientTsUserToTokens } = (0, oidcClientTsUserToTokens_1.createOidcClientTsUserToTokens)({
|
|
884
884
|
configId,
|
|
885
|
-
decodedIdTokenSchema,
|
|
886
885
|
__unsafe_useIdTokenAsAccessToken,
|
|
887
886
|
exports_DPoP: shouldEnableDPoP ? exports_DPoP : undefined,
|
|
888
887
|
exports_tokenSubstitution,
|
|
889
888
|
log
|
|
890
889
|
});
|
|
891
890
|
let currentTokens = oidcClientTsUserToTokens({
|
|
892
|
-
oidcClientTsUser: resultOfLoginProcess.oidcClientTsUser
|
|
893
|
-
decodedIdToken_previous: undefined
|
|
891
|
+
oidcClientTsUser: resultOfLoginProcess.oidcClientTsUser
|
|
894
892
|
});
|
|
895
893
|
const onTokenChanges = new Set();
|
|
896
894
|
const renewTokens = (() => {
|
|
@@ -1037,8 +1035,7 @@ async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
1037
1035
|
break;
|
|
1038
1036
|
}
|
|
1039
1037
|
currentTokens = oidcClientTsUserToTokens({
|
|
1040
|
-
oidcClientTsUser
|
|
1041
|
-
decodedIdToken_previous: currentTokens.decodedIdToken
|
|
1038
|
+
oidcClientTsUser
|
|
1042
1039
|
});
|
|
1043
1040
|
if ((0, persistedAuthState_1.getPersistedAuthState)({ configId }) !== undefined) {
|
|
1044
1041
|
(0, persistedAuthState_1.persistAuthState)({
|
|
@@ -1113,6 +1110,8 @@ async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
1113
1110
|
})(),
|
|
1114
1111
|
getCurrentTokens: () => currentTokens,
|
|
1115
1112
|
issuerUri,
|
|
1113
|
+
clientId,
|
|
1114
|
+
validRedirectUri: homeUrlAndRedirectUri,
|
|
1116
1115
|
oidcMetadata,
|
|
1117
1116
|
renewTokens: () => renewTokens()
|
|
1118
1117
|
});
|
|
@@ -1156,7 +1155,7 @@ async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
1156
1155
|
}
|
|
1157
1156
|
}
|
|
1158
1157
|
const autoLogoutCountdownTickCallbacks = new Set();
|
|
1159
|
-
const { sid: sessionId, sub: subjectId } = currentTokens.
|
|
1158
|
+
const { sid: sessionId, sub: subjectId } = currentTokens.decodedIdToken;
|
|
1160
1159
|
(0, assert_1.assert)(subjectId !== undefined, "The 'sub' claim is missing from the id token");
|
|
1161
1160
|
(0, assert_1.assert)(sessionId === undefined || typeof sessionId === "string");
|
|
1162
1161
|
let wouldHaveAutoLoggedOutIfBrowserWasOnline = false;
|
|
@@ -1194,6 +1193,10 @@ async function createOidc_nonMemoized(params, preProcessedParams) {
|
|
|
1194
1193
|
return currentTokens;
|
|
1195
1194
|
},
|
|
1196
1195
|
getDecodedIdToken: () => currentTokens.decodedIdToken,
|
|
1196
|
+
getAccessToken: async () => {
|
|
1197
|
+
const { accessToken } = await oidc_loggedIn.getTokens();
|
|
1198
|
+
return accessToken;
|
|
1199
|
+
},
|
|
1197
1200
|
logout: async (params) => {
|
|
1198
1201
|
if (globalContext.hasLogoutBeenCalled) {
|
|
1199
1202
|
log?.("logout() has already been called, ignoring the call");
|