oidc-auth-client 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +240 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/src/auth/Client.d.ts +135 -0
- package/dist/src/auth/Client.d.ts.map +1 -0
- package/dist/src/auth/Client.js +734 -0
- package/dist/src/auth/Client.js.map +1 -0
- package/dist/src/auth/Events.d.ts +51 -0
- package/dist/src/auth/Events.d.ts.map +1 -0
- package/dist/src/auth/Events.js +139 -0
- package/dist/src/auth/Events.js.map +1 -0
- package/dist/src/auth/Session.d.ts +132 -0
- package/dist/src/auth/Session.d.ts.map +1 -0
- package/dist/src/auth/Session.js +355 -0
- package/dist/src/auth/Session.js.map +1 -0
- package/dist/src/auth/Settings.d.ts +178 -0
- package/dist/src/auth/Settings.d.ts.map +1 -0
- package/dist/src/auth/Settings.js +210 -0
- package/dist/src/auth/Settings.js.map +1 -0
- package/dist/src/crypto/Crypto.d.ts +14 -0
- package/dist/src/crypto/Crypto.d.ts.map +1 -0
- package/dist/src/crypto/Crypto.js +107 -0
- package/dist/src/crypto/Crypto.js.map +1 -0
- package/dist/src/models/User.d.ts +31 -0
- package/dist/src/models/User.d.ts.map +1 -0
- package/dist/src/models/User.js +57 -0
- package/dist/src/models/User.js.map +1 -0
- package/dist/src/navigation/Navigator.d.ts +106 -0
- package/dist/src/navigation/Navigator.d.ts.map +1 -0
- package/dist/src/navigation/Navigator.js +441 -0
- package/dist/src/navigation/Navigator.js.map +1 -0
- package/dist/src/protocol/Requests.d.ts +50 -0
- package/dist/src/protocol/Requests.d.ts.map +1 -0
- package/dist/src/protocol/Requests.js +109 -0
- package/dist/src/protocol/Requests.js.map +1 -0
- package/dist/src/protocol/ResponseValidator.d.ts +39 -0
- package/dist/src/protocol/ResponseValidator.d.ts.map +1 -0
- package/dist/src/protocol/ResponseValidator.js +366 -0
- package/dist/src/protocol/ResponseValidator.js.map +1 -0
- package/dist/src/protocol/Responses.d.ts +44 -0
- package/dist/src/protocol/Responses.d.ts.map +1 -0
- package/dist/src/protocol/Responses.js +77 -0
- package/dist/src/protocol/Responses.js.map +1 -0
- package/dist/src/protocol/TokenService.d.ts +38 -0
- package/dist/src/protocol/TokenService.d.ts.map +1 -0
- package/dist/src/protocol/TokenService.js +259 -0
- package/dist/src/protocol/TokenService.js.map +1 -0
- package/dist/src/services/Http.d.ts +55 -0
- package/dist/src/services/Http.d.ts.map +1 -0
- package/dist/src/services/Http.js +276 -0
- package/dist/src/services/Http.js.map +1 -0
- package/dist/src/services/Timer.d.ts +18 -0
- package/dist/src/services/Timer.d.ts.map +1 -0
- package/dist/src/services/Timer.js +56 -0
- package/dist/src/services/Timer.js.map +1 -0
- package/dist/src/storage/Storage.d.ts +23 -0
- package/dist/src/storage/Storage.d.ts.map +1 -0
- package/dist/src/storage/Storage.js +65 -0
- package/dist/src/storage/Storage.js.map +1 -0
- package/dist/src/types/crypto.d.ts +32 -0
- package/dist/src/types/crypto.d.ts.map +1 -0
- package/dist/src/types/crypto.js +3 -0
- package/dist/src/types/crypto.js.map +1 -0
- package/dist/src/types/navigator.d.ts +33 -0
- package/dist/src/types/navigator.d.ts.map +1 -0
- package/dist/src/types/navigator.js +3 -0
- package/dist/src/types/navigator.js.map +1 -0
- package/dist/src/types/storage.d.ts +7 -0
- package/dist/src/types/storage.d.ts.map +1 -0
- package/dist/src/types/storage.js +3 -0
- package/dist/src/types/storage.js.map +1 -0
- package/dist/src/types/user.d.ts +6 -0
- package/dist/src/types/user.d.ts.map +1 -0
- package/dist/src/types/user.js +3 -0
- package/dist/src/types/user.js.map +1 -0
- package/dist/src/utils/Event.d.ts +10 -0
- package/dist/src/utils/Event.d.ts.map +1 -0
- package/dist/src/utils/Event.js +24 -0
- package/dist/src/utils/Event.js.map +1 -0
- package/dist/src/utils/Global.d.ts +14 -0
- package/dist/src/utils/Global.d.ts.map +1 -0
- package/dist/src/utils/Global.js +50 -0
- package/dist/src/utils/Global.js.map +1 -0
- package/dist/src/utils/Log.d.ts +30 -0
- package/dist/src/utils/Log.d.ts.map +1 -0
- package/dist/src/utils/Log.js +68 -0
- package/dist/src/utils/Log.js.map +1 -0
- package/package.json +91 -0
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
|
|
2
|
+
import { Log } from '../utils/Log.js';
|
|
3
|
+
import { ClockService } from '../services/Timer.js';
|
|
4
|
+
import { WebStorageStateStore } from '../storage/Storage.js';
|
|
5
|
+
import { ResponseValidator } from '../protocol/ResponseValidator.js';
|
|
6
|
+
import { MetadataService } from '../services/Http.js';
|
|
7
|
+
import { RedirectNavigator, PopupNavigator, IFrameNavigator } from '../navigation/Navigator.js';
|
|
8
|
+
import { Global } from '../utils/Global.js';
|
|
9
|
+
import { SigninRequest } from '../protocol/Requests.js';
|
|
10
|
+
const OidcMetadataUrlPath = '.well-known/openid-configuration';
|
|
11
|
+
const DefaultResponseType = 'id_token';
|
|
12
|
+
const DefaultScope = 'openid';
|
|
13
|
+
const DefaultClientAuthentication = 'client_secret_post';
|
|
14
|
+
const DefaultStaleStateAge = 60 * 15; // seconds
|
|
15
|
+
const DefaultClockSkewInSeconds = 60 * 5;
|
|
16
|
+
const DefaultAccessTokenExpiringNotificationTime = 60;
|
|
17
|
+
const DefaultCheckSessionInterval = 2000;
|
|
18
|
+
export class OidcClientSettings {
|
|
19
|
+
constructor({
|
|
20
|
+
// metadata related
|
|
21
|
+
authority, metadataUrl, metadata, signingKeys, metadataSeed,
|
|
22
|
+
// client related
|
|
23
|
+
client_id, client_secret, response_type = DefaultResponseType, scope = DefaultScope, redirect_uri, post_logout_redirect_uri, client_authentication = DefaultClientAuthentication,
|
|
24
|
+
// optional protocol
|
|
25
|
+
prompt, display, max_age, ui_locales, acr_values, resource, response_mode,
|
|
26
|
+
// behavior flags
|
|
27
|
+
filterProtocolClaims = true, loadUserInfo = true, staleStateAge = DefaultStaleStateAge, clockSkew = DefaultClockSkewInSeconds, clockService = new ClockService(), userInfoJwtIssuer = 'OP', mergeClaims = false,
|
|
28
|
+
// other behavior
|
|
29
|
+
stateStore = new WebStorageStateStore(), ResponseValidatorCtor = ResponseValidator, MetadataServiceCtor = MetadataService,
|
|
30
|
+
// extra query params
|
|
31
|
+
extraQueryParams = {}, extraTokenParams = {}, } = {}) {
|
|
32
|
+
this._authority = authority;
|
|
33
|
+
this._metadataUrl = metadataUrl;
|
|
34
|
+
this._metadata = metadata;
|
|
35
|
+
this._metadataSeed = metadataSeed;
|
|
36
|
+
this._signingKeys = signingKeys;
|
|
37
|
+
this._client_id = client_id;
|
|
38
|
+
this._client_secret = client_secret;
|
|
39
|
+
this._response_type = response_type;
|
|
40
|
+
this._scope = scope;
|
|
41
|
+
this._redirect_uri = redirect_uri;
|
|
42
|
+
this._post_logout_redirect_uri = post_logout_redirect_uri;
|
|
43
|
+
this._client_authentication = client_authentication;
|
|
44
|
+
this._prompt = prompt;
|
|
45
|
+
this._display = display;
|
|
46
|
+
this._max_age = max_age;
|
|
47
|
+
this._ui_locales = ui_locales;
|
|
48
|
+
this._acr_values = acr_values;
|
|
49
|
+
this._resource = resource;
|
|
50
|
+
this._response_mode = response_mode;
|
|
51
|
+
this._filterProtocolClaims = !!filterProtocolClaims;
|
|
52
|
+
this._loadUserInfo = !!loadUserInfo;
|
|
53
|
+
this._staleStateAge = staleStateAge;
|
|
54
|
+
this._clockSkew = clockSkew;
|
|
55
|
+
this._clockService = clockService;
|
|
56
|
+
this._userInfoJwtIssuer = userInfoJwtIssuer;
|
|
57
|
+
this._mergeClaims = !!mergeClaims;
|
|
58
|
+
this._stateStore = stateStore;
|
|
59
|
+
this._validator = new ResponseValidatorCtor(this);
|
|
60
|
+
this._metadataService = new MetadataServiceCtor(this);
|
|
61
|
+
this._extraQueryParams = typeof extraQueryParams === 'object' ? extraQueryParams : {};
|
|
62
|
+
this._extraTokenParams = typeof extraTokenParams === 'object' ? extraTokenParams : {};
|
|
63
|
+
}
|
|
64
|
+
// client config
|
|
65
|
+
get client_id() { return this._client_id; }
|
|
66
|
+
set client_id(value) {
|
|
67
|
+
if (!this._client_id) {
|
|
68
|
+
this._client_id = value;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
Log.error('OidcClientSettings.set_client_id: client_id has already been assigned.');
|
|
72
|
+
throw new Error('client_id has already been assigned.');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
get client_secret() { return this._client_secret; }
|
|
76
|
+
get response_type() { return this._response_type; }
|
|
77
|
+
get scope() { return this._scope; }
|
|
78
|
+
get redirect_uri() { return this._redirect_uri; }
|
|
79
|
+
get post_logout_redirect_uri() { return this._post_logout_redirect_uri; }
|
|
80
|
+
get client_authentication() { return this._client_authentication; }
|
|
81
|
+
// optional protocol params
|
|
82
|
+
get prompt() { return this._prompt; }
|
|
83
|
+
get display() { return this._display; }
|
|
84
|
+
get max_age() { return this._max_age; }
|
|
85
|
+
get ui_locales() { return this._ui_locales; }
|
|
86
|
+
get acr_values() { return this._acr_values; }
|
|
87
|
+
get resource() { return this._resource; }
|
|
88
|
+
get response_mode() { return this._response_mode; }
|
|
89
|
+
// metadata
|
|
90
|
+
get authority() { return this._authority; }
|
|
91
|
+
set authority(value) {
|
|
92
|
+
if (!this._authority) {
|
|
93
|
+
this._authority = value;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
Log.error('OidcClientSettings.set_authority: authority has already been assigned.');
|
|
97
|
+
throw new Error('authority has already been assigned.');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
get metadataUrl() {
|
|
101
|
+
if (!this._metadataUrl) {
|
|
102
|
+
this._metadataUrl = this.authority;
|
|
103
|
+
if (this._metadataUrl && this._metadataUrl.indexOf(OidcMetadataUrlPath) < 0) {
|
|
104
|
+
if (this._metadataUrl[this._metadataUrl.length - 1] !== '/') {
|
|
105
|
+
this._metadataUrl += '/';
|
|
106
|
+
}
|
|
107
|
+
this._metadataUrl += OidcMetadataUrlPath;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return this._metadataUrl;
|
|
111
|
+
}
|
|
112
|
+
// settable/cachable metadata values
|
|
113
|
+
get metadata() { return this._metadata; }
|
|
114
|
+
set metadata(value) { this._metadata = value; }
|
|
115
|
+
get metadataSeed() { return this._metadataSeed; }
|
|
116
|
+
set metadataSeed(value) { this._metadataSeed = value; }
|
|
117
|
+
get signingKeys() { return this._signingKeys; }
|
|
118
|
+
set signingKeys(value) { this._signingKeys = value; }
|
|
119
|
+
// behavior flags
|
|
120
|
+
get filterProtocolClaims() { return this._filterProtocolClaims; }
|
|
121
|
+
get loadUserInfo() { return this._loadUserInfo; }
|
|
122
|
+
get staleStateAge() { return this._staleStateAge; }
|
|
123
|
+
get clockSkew() { return this._clockSkew; }
|
|
124
|
+
get userInfoJwtIssuer() { return this._userInfoJwtIssuer; }
|
|
125
|
+
get mergeClaims() { return this._mergeClaims; }
|
|
126
|
+
get stateStore() { return this._stateStore; }
|
|
127
|
+
get validator() { return this._validator; }
|
|
128
|
+
get metadataService() { return this._metadataService; }
|
|
129
|
+
// extra query params
|
|
130
|
+
get extraQueryParams() { return this._extraQueryParams; }
|
|
131
|
+
set extraQueryParams(value) {
|
|
132
|
+
if (typeof value === 'object') {
|
|
133
|
+
this._extraQueryParams = value;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
this._extraQueryParams = {};
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// extra token params
|
|
140
|
+
get extraTokenParams() { return this._extraTokenParams; }
|
|
141
|
+
set extraTokenParams(value) {
|
|
142
|
+
if (typeof value === 'object') {
|
|
143
|
+
this._extraTokenParams = value;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this._extraTokenParams = {};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// get the time
|
|
150
|
+
getEpochTime() {
|
|
151
|
+
return this._clockService.getEpochTime();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
export class UserManagerSettings extends OidcClientSettings {
|
|
155
|
+
constructor(settings = {}) {
|
|
156
|
+
super(settings);
|
|
157
|
+
this._popup_redirect_uri = settings.popup_redirect_uri;
|
|
158
|
+
this._popup_post_logout_redirect_uri = settings.popup_post_logout_redirect_uri;
|
|
159
|
+
this._popupWindowFeatures = settings.popupWindowFeatures;
|
|
160
|
+
this._popupWindowTarget = settings.popupWindowTarget;
|
|
161
|
+
this._silent_redirect_uri = settings.silent_redirect_uri;
|
|
162
|
+
this._silentRequestTimeout = settings.silentRequestTimeout;
|
|
163
|
+
this._automaticSilentRenew = settings.automaticSilentRenew || false;
|
|
164
|
+
this._validateSubOnSilentRenew = settings.validateSubOnSilentRenew || false;
|
|
165
|
+
this._includeIdTokenInSilentRenew = settings.includeIdTokenInSilentRenew !== false;
|
|
166
|
+
this._accessTokenExpiringNotificationTime =
|
|
167
|
+
settings.accessTokenExpiringNotificationTime || DefaultAccessTokenExpiringNotificationTime;
|
|
168
|
+
this._monitorSession = settings.monitorSession !== false;
|
|
169
|
+
this._monitorAnonymousSession = settings.monitorAnonymousSession || false;
|
|
170
|
+
this._checkSessionInterval = settings.checkSessionInterval || DefaultCheckSessionInterval;
|
|
171
|
+
this._stopCheckSessionOnError = settings.stopCheckSessionOnError !== false;
|
|
172
|
+
if (settings.query_status_response_type) {
|
|
173
|
+
this._query_status_response_type = settings.query_status_response_type;
|
|
174
|
+
}
|
|
175
|
+
else if (settings.response_type) {
|
|
176
|
+
this._query_status_response_type = SigninRequest.isOidc(settings.response_type)
|
|
177
|
+
? 'id_token'
|
|
178
|
+
: 'code';
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this._query_status_response_type = 'id_token';
|
|
182
|
+
}
|
|
183
|
+
this._revokeAccessTokenOnSignout = settings.revokeAccessTokenOnSignout || false;
|
|
184
|
+
this._redirectNavigator = settings.redirectNavigator || new RedirectNavigator();
|
|
185
|
+
this._popupNavigator = settings.popupNavigator || new PopupNavigator();
|
|
186
|
+
this._iframeNavigator = settings.iframeNavigator || new IFrameNavigator();
|
|
187
|
+
this._userStore = settings.userStore || new WebStorageStateStore({ store: Global.sessionStorage });
|
|
188
|
+
}
|
|
189
|
+
get popup_redirect_uri() { return this._popup_redirect_uri; }
|
|
190
|
+
get popup_post_logout_redirect_uri() { return this._popup_post_logout_redirect_uri; }
|
|
191
|
+
get popupWindowFeatures() { return this._popupWindowFeatures; }
|
|
192
|
+
get popupWindowTarget() { return this._popupWindowTarget; }
|
|
193
|
+
get silent_redirect_uri() { return this._silent_redirect_uri; }
|
|
194
|
+
get silentRequestTimeout() { return this._silentRequestTimeout; }
|
|
195
|
+
get automaticSilentRenew() { return this._automaticSilentRenew; }
|
|
196
|
+
get validateSubOnSilentRenew() { return this._validateSubOnSilentRenew; }
|
|
197
|
+
get includeIdTokenInSilentRenew() { return this._includeIdTokenInSilentRenew; }
|
|
198
|
+
get accessTokenExpiringNotificationTime() { return this._accessTokenExpiringNotificationTime; }
|
|
199
|
+
get monitorSession() { return this._monitorSession; }
|
|
200
|
+
get monitorAnonymousSession() { return this._monitorAnonymousSession; }
|
|
201
|
+
get checkSessionInterval() { return this._checkSessionInterval; }
|
|
202
|
+
get stopCheckSessionOnError() { return this._stopCheckSessionOnError; }
|
|
203
|
+
get query_status_response_type() { return this._query_status_response_type; }
|
|
204
|
+
get revokeAccessTokenOnSignout() { return this._revokeAccessTokenOnSignout; }
|
|
205
|
+
get redirectNavigator() { return this._redirectNavigator; }
|
|
206
|
+
get popupNavigator() { return this._popupNavigator; }
|
|
207
|
+
get iframeNavigator() { return this._iframeNavigator; }
|
|
208
|
+
get userStore() { return this._userStore; }
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=Settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../../src/auth/Settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { JwkKey, JwtPayload, ParsedJwt } from '../types/crypto.js';
|
|
2
|
+
export type { JwtPayload, ParsedJwt } from '../types/crypto.js';
|
|
3
|
+
export declare function generateRandom(): string;
|
|
4
|
+
export declare class JoseUtil {
|
|
5
|
+
static parseJwt(jwt: string): ParsedJwt | undefined;
|
|
6
|
+
static validateJwt(jwt: string, key: JwkKey, issuer: string, audience: string, clockSkew?: number, _now?: number, timeInsensitive?: boolean): Promise<JwtPayload>;
|
|
7
|
+
static validateJwtAttributes(jwt: string, issuer: string, audience: string, clockSkew?: number, _now?: number, timeInsensitive?: boolean): Promise<JwtPayload>;
|
|
8
|
+
static hashString(value: string, alg: string): Promise<string>;
|
|
9
|
+
static hexToBase64Url(hex: string): string;
|
|
10
|
+
static calculatePKCECodeChallenge(codeVerifier: string): Promise<string>;
|
|
11
|
+
}
|
|
12
|
+
export type JoseUtilType = typeof JoseUtil;
|
|
13
|
+
export default JoseUtil;
|
|
14
|
+
//# sourceMappingURL=Crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAMhE,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAMD,qBAAa,QAAQ;IACnB,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;WAetC,WAAW,CACtB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAU,EACrB,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,UAAU,CAAC;WAkBT,qBAAqB,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAU,EACrB,IAAI,CAAC,EAAE,MAAM,EACb,eAAe,CAAC,EAAE,OAAO,GACxB,OAAO,CAAC,UAAU,CAAC;WAkCT,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWpE,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;WAM7B,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAM/E;AAGD,MAAM,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC;AAC3C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
|
|
2
|
+
import { Log } from '../utils/Log.js';
|
|
3
|
+
import { importJWK, jwtVerify, decodeJwt, decodeProtectedHeader, base64url, } from 'jose';
|
|
4
|
+
//=============================================================================
|
|
5
|
+
// Random generation
|
|
6
|
+
//=============================================================================
|
|
7
|
+
export function generateRandom() {
|
|
8
|
+
return crypto.randomUUID().replace(/-/g, '');
|
|
9
|
+
}
|
|
10
|
+
//=============================================================================
|
|
11
|
+
// JoseUtil — JWT parsing, verification, and PKCE via the `jose` library
|
|
12
|
+
//=============================================================================
|
|
13
|
+
export class JoseUtil {
|
|
14
|
+
static parseJwt(jwt) {
|
|
15
|
+
Log.debug('JoseUtil.parseJwt');
|
|
16
|
+
try {
|
|
17
|
+
const header = decodeProtectedHeader(jwt);
|
|
18
|
+
const payload = decodeJwt(jwt);
|
|
19
|
+
return {
|
|
20
|
+
header: { alg: header.alg, kid: header.kid, ...header },
|
|
21
|
+
payload: payload,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
Log.error(e);
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
static async validateJwt(jwt, key, issuer, audience, clockSkew = 0, _now, timeInsensitive) {
|
|
30
|
+
Log.debug('JoseUtil.validateJwt');
|
|
31
|
+
try {
|
|
32
|
+
const alg = decodeProtectedHeader(jwt).alg ?? 'RS256';
|
|
33
|
+
const cryptoKey = await importJWK(key, alg);
|
|
34
|
+
const { payload } = await jwtVerify(jwt, cryptoKey, {
|
|
35
|
+
issuer,
|
|
36
|
+
audience,
|
|
37
|
+
clockTolerance: clockSkew,
|
|
38
|
+
...(timeInsensitive ? { currentDate: new Date(0) } : {}),
|
|
39
|
+
});
|
|
40
|
+
return payload;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
Log.error(e?.message || String(e));
|
|
44
|
+
return Promise.reject(new Error('JWT validation failed: ' + e?.message));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
static async validateJwtAttributes(jwt, issuer, audience, clockSkew = 0, _now, timeInsensitive) {
|
|
48
|
+
// Validates claims only (no signature check). Used when the signature has
|
|
49
|
+
// already been verified separately (e.g. refresh token flow).
|
|
50
|
+
Log.debug('JoseUtil.validateJwtAttributes');
|
|
51
|
+
const parsed = JoseUtil.parseJwt(jwt);
|
|
52
|
+
if (!parsed)
|
|
53
|
+
return Promise.reject(new Error('Failed to parse JWT'));
|
|
54
|
+
const payload = parsed.payload;
|
|
55
|
+
if (!payload.iss)
|
|
56
|
+
return Promise.reject(new Error('issuer was not provided'));
|
|
57
|
+
if (payload.iss !== issuer)
|
|
58
|
+
return Promise.reject(new Error('Invalid issuer in token: ' + payload.iss));
|
|
59
|
+
if (!payload.aud)
|
|
60
|
+
return Promise.reject(new Error('aud was not provided'));
|
|
61
|
+
const validAudience = payload.aud === audience ||
|
|
62
|
+
(Array.isArray(payload.aud) && payload.aud.includes(audience));
|
|
63
|
+
if (!validAudience)
|
|
64
|
+
return Promise.reject(new Error('Invalid audience in token: ' + String(payload.aud)));
|
|
65
|
+
if (payload.azp && payload.azp !== audience)
|
|
66
|
+
return Promise.reject(new Error('Invalid azp in token: ' + String(payload.azp)));
|
|
67
|
+
if (!timeInsensitive) {
|
|
68
|
+
const now = Math.floor(Date.now() / 1000);
|
|
69
|
+
const lower = now + clockSkew;
|
|
70
|
+
const upper = now - clockSkew;
|
|
71
|
+
if (!payload.iat)
|
|
72
|
+
return Promise.reject(new Error('iat was not provided'));
|
|
73
|
+
if (lower < payload.iat)
|
|
74
|
+
return Promise.reject(new Error('iat is in the future: ' + payload.iat));
|
|
75
|
+
if (payload.nbf && lower < payload.nbf)
|
|
76
|
+
return Promise.reject(new Error('nbf is in the future: ' + payload.nbf));
|
|
77
|
+
if (!payload.exp)
|
|
78
|
+
return Promise.reject(new Error('exp was not provided'));
|
|
79
|
+
if (payload.exp < upper)
|
|
80
|
+
return Promise.reject(new Error('exp is in the past: ' + payload.exp));
|
|
81
|
+
}
|
|
82
|
+
return payload;
|
|
83
|
+
}
|
|
84
|
+
static async hashString(value, alg) {
|
|
85
|
+
// Returns hex-encoded hash. Used for at_hash validation in ResponseValidator.
|
|
86
|
+
const encoder = new TextEncoder();
|
|
87
|
+
const data = encoder.encode(value);
|
|
88
|
+
const hashAlg = alg.replace('SHA', 'SHA-');
|
|
89
|
+
const hashBuffer = await crypto.subtle.digest(hashAlg, data);
|
|
90
|
+
return Array.from(new Uint8Array(hashBuffer))
|
|
91
|
+
.map(b => b.toString(16).padStart(2, '0'))
|
|
92
|
+
.join('');
|
|
93
|
+
}
|
|
94
|
+
static hexToBase64Url(hex) {
|
|
95
|
+
// Converts a hex-encoded string to base64url. Used for at_hash comparison.
|
|
96
|
+
const bytes = new Uint8Array(hex.match(/.{2}/g).map(b => parseInt(b, 16)));
|
|
97
|
+
return base64url.encode(bytes);
|
|
98
|
+
}
|
|
99
|
+
static async calculatePKCECodeChallenge(codeVerifier) {
|
|
100
|
+
// SHA-256 hash of the code verifier, base64url-encoded (S256 method).
|
|
101
|
+
const data = new TextEncoder().encode(codeVerifier);
|
|
102
|
+
const digest = await crypto.subtle.digest('SHA-256', data);
|
|
103
|
+
return base64url.encode(new Uint8Array(digest));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export default JoseUtil;
|
|
107
|
+
//# sourceMappingURL=Crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Crypto.js","sourceRoot":"","sources":["../../../src/crypto/Crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { UserProfile } from '../types/user.js';
|
|
2
|
+
export interface UserData {
|
|
3
|
+
id_token?: string;
|
|
4
|
+
session_state?: string | null;
|
|
5
|
+
access_token?: string;
|
|
6
|
+
refresh_token?: string;
|
|
7
|
+
token_type?: string;
|
|
8
|
+
scope?: string;
|
|
9
|
+
profile?: UserProfile;
|
|
10
|
+
expires_at?: number;
|
|
11
|
+
state?: unknown;
|
|
12
|
+
}
|
|
13
|
+
export declare class User {
|
|
14
|
+
id_token: string;
|
|
15
|
+
session_state: string | null;
|
|
16
|
+
access_token: string;
|
|
17
|
+
refresh_token: string;
|
|
18
|
+
token_type: string;
|
|
19
|
+
scope: string;
|
|
20
|
+
profile: UserProfile;
|
|
21
|
+
expires_at: number | undefined;
|
|
22
|
+
state: unknown;
|
|
23
|
+
constructor({ id_token, session_state, access_token, refresh_token, token_type, scope, profile, expires_at, state, }: UserData);
|
|
24
|
+
get expires_in(): number | undefined;
|
|
25
|
+
set expires_in(value: number | string | undefined);
|
|
26
|
+
get expired(): boolean | undefined;
|
|
27
|
+
get scopes(): string[];
|
|
28
|
+
toStorageString(): string;
|
|
29
|
+
static fromStorageString(storageString: string): User;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=User.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"User.d.ts","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,IAAI;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;gBAEH,EACV,QAAa,EACb,aAAoB,EACpB,YAAiB,EACjB,aAAkB,EAClB,UAAe,EACf,KAAU,EACV,OAAqB,EACrB,UAAU,EACV,KAAK,GACN,EAAE,QAAQ;IAYX,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAMnC;IACD,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAMhD;IAED,IAAI,OAAO,IAAI,OAAO,GAAG,SAAS,CAMjC;IAED,IAAI,MAAM,IAAI,MAAM,EAAE,CAErB;IAED,eAAe,IAAI,MAAM;IAczB,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;CAItD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
|
|
2
|
+
import { Log } from '../utils/Log.js';
|
|
3
|
+
export class User {
|
|
4
|
+
constructor({ id_token = '', session_state = null, access_token = '', refresh_token = '', token_type = '', scope = '', profile = { sub: '' }, expires_at, state, }) {
|
|
5
|
+
this.id_token = id_token;
|
|
6
|
+
this.session_state = session_state;
|
|
7
|
+
this.access_token = access_token;
|
|
8
|
+
this.refresh_token = refresh_token;
|
|
9
|
+
this.token_type = token_type;
|
|
10
|
+
this.scope = scope;
|
|
11
|
+
this.profile = profile;
|
|
12
|
+
this.expires_at = expires_at;
|
|
13
|
+
this.state = state;
|
|
14
|
+
}
|
|
15
|
+
get expires_in() {
|
|
16
|
+
if (this.expires_at) {
|
|
17
|
+
const now = Math.floor(Date.now() / 1000);
|
|
18
|
+
return this.expires_at - now;
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
set expires_in(value) {
|
|
23
|
+
const expires_in = parseInt(String(value));
|
|
24
|
+
if (typeof expires_in === 'number' && expires_in > 0) {
|
|
25
|
+
const now = Math.floor(Date.now() / 1000);
|
|
26
|
+
this.expires_at = now + expires_in;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
get expired() {
|
|
30
|
+
const expires_in = this.expires_in;
|
|
31
|
+
if (expires_in !== undefined) {
|
|
32
|
+
return expires_in <= 0;
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
get scopes() {
|
|
37
|
+
return (this.scope || '').split(' ');
|
|
38
|
+
}
|
|
39
|
+
toStorageString() {
|
|
40
|
+
Log.debug('User.toStorageString');
|
|
41
|
+
return JSON.stringify({
|
|
42
|
+
id_token: this.id_token,
|
|
43
|
+
session_state: this.session_state,
|
|
44
|
+
access_token: this.access_token,
|
|
45
|
+
refresh_token: this.refresh_token,
|
|
46
|
+
token_type: this.token_type,
|
|
47
|
+
scope: this.scope,
|
|
48
|
+
profile: this.profile,
|
|
49
|
+
expires_at: this.expires_at,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
static fromStorageString(storageString) {
|
|
53
|
+
Log.debug('User.fromStorageString');
|
|
54
|
+
return new User(JSON.parse(storageString));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=User.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"User.js","sourceRoot":"","sources":["../../../src/models/User.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAE3G,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAetC,MAAM,OAAO,IAAI;IAWf,YAAY,EACV,QAAQ,GAAG,EAAE,EACb,aAAa,GAAG,IAAI,EACpB,YAAY,GAAG,EAAE,EACjB,aAAa,GAAG,EAAE,EAClB,UAAU,GAAG,EAAE,EACf,KAAK,GAAG,EAAE,EACV,OAAO,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EACrB,UAAU,EACV,KAAK,GACI;QACT,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QAC/B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,UAAU,CAAC,KAAkC;QAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC;QACrC,CAAC;IACH,CAAC;IAED,IAAI,OAAO;QACT,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,UAAU,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,eAAe;QACb,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,aAAqB;QAC5C,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACpC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { NavigateParams, NavigatorResponse, NavigatorHandle } from '../types/navigator.js';
|
|
2
|
+
export type { NavigateParams } from '../types/navigator.js';
|
|
3
|
+
export declare class RedirectNavigator {
|
|
4
|
+
prepare(): Promise<RedirectNavigator>;
|
|
5
|
+
navigate(params: NavigateParams & {
|
|
6
|
+
url: string;
|
|
7
|
+
}): Promise<NavigatorResponse>;
|
|
8
|
+
get url(): string;
|
|
9
|
+
}
|
|
10
|
+
export declare class PopupWindow implements NavigatorHandle {
|
|
11
|
+
private _promise;
|
|
12
|
+
private _resolve;
|
|
13
|
+
private _reject;
|
|
14
|
+
private _popup;
|
|
15
|
+
private _checkForPopupClosedTimer;
|
|
16
|
+
private _id;
|
|
17
|
+
constructor(params: NavigateParams);
|
|
18
|
+
get promise(): Promise<NavigatorResponse>;
|
|
19
|
+
navigate(params: NavigateParams & {
|
|
20
|
+
url: string;
|
|
21
|
+
}): Promise<NavigatorResponse>;
|
|
22
|
+
private _success;
|
|
23
|
+
private _error;
|
|
24
|
+
close(): void;
|
|
25
|
+
private _cleanup;
|
|
26
|
+
private _checkForPopupClosed;
|
|
27
|
+
private _callback;
|
|
28
|
+
static notifyOpener(url: string | undefined, keepOpen: boolean | undefined, delimiter: string): void;
|
|
29
|
+
}
|
|
30
|
+
export declare class PopupNavigator {
|
|
31
|
+
prepare(params: NavigateParams): Promise<PopupWindow>;
|
|
32
|
+
callback(url: string | undefined, keepOpen: boolean | undefined, delimiter: string): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export declare class IFrameWindow implements NavigatorHandle {
|
|
35
|
+
private _promise;
|
|
36
|
+
private _resolve;
|
|
37
|
+
private _reject;
|
|
38
|
+
private _boundMessageEvent;
|
|
39
|
+
private _frame;
|
|
40
|
+
private _timer;
|
|
41
|
+
constructor(_params?: NavigateParams);
|
|
42
|
+
navigate(params: NavigateParams & {
|
|
43
|
+
url: string;
|
|
44
|
+
}): Promise<NavigatorResponse>;
|
|
45
|
+
get promise(): Promise<NavigatorResponse>;
|
|
46
|
+
private _success;
|
|
47
|
+
private _error;
|
|
48
|
+
close(): void;
|
|
49
|
+
private _cleanup;
|
|
50
|
+
private _timeout;
|
|
51
|
+
private _message;
|
|
52
|
+
private get _origin();
|
|
53
|
+
static notifyParent(url?: string): void;
|
|
54
|
+
}
|
|
55
|
+
export declare class IFrameNavigator {
|
|
56
|
+
prepare(params: NavigateParams): Promise<IFrameWindow>;
|
|
57
|
+
callback(url?: string): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
export declare class CheckSessionIFrame {
|
|
60
|
+
private _callback;
|
|
61
|
+
private _client_id;
|
|
62
|
+
private _url;
|
|
63
|
+
private _interval;
|
|
64
|
+
private _stopOnError;
|
|
65
|
+
private _frame_origin;
|
|
66
|
+
private _frame;
|
|
67
|
+
private _boundMessageEvent;
|
|
68
|
+
private _timer;
|
|
69
|
+
private _session_state;
|
|
70
|
+
constructor(callback: () => void, client_id: string, url: string, interval?: number, stopOnError?: boolean);
|
|
71
|
+
load(): Promise<void>;
|
|
72
|
+
private _message;
|
|
73
|
+
start(session_state: string): void;
|
|
74
|
+
stop(): void;
|
|
75
|
+
}
|
|
76
|
+
export declare class CordovaPopupWindow implements NavigatorHandle {
|
|
77
|
+
private _promise;
|
|
78
|
+
private _resolve;
|
|
79
|
+
private _reject;
|
|
80
|
+
private _popup;
|
|
81
|
+
private _exitCallbackEvent;
|
|
82
|
+
private _loadStartCallbackEvent;
|
|
83
|
+
features: string;
|
|
84
|
+
target: string;
|
|
85
|
+
redirect_uri: string | undefined;
|
|
86
|
+
constructor(params: NavigateParams);
|
|
87
|
+
private _isInAppBrowserInstalled;
|
|
88
|
+
navigate(params: NavigateParams & {
|
|
89
|
+
url: string;
|
|
90
|
+
}): Promise<NavigatorResponse>;
|
|
91
|
+
get promise(): Promise<NavigatorResponse>;
|
|
92
|
+
private _loadStartCallback;
|
|
93
|
+
private _exitCallback;
|
|
94
|
+
private _success;
|
|
95
|
+
private _error;
|
|
96
|
+
private _errorAndReturn;
|
|
97
|
+
close(): void;
|
|
98
|
+
private _cleanup;
|
|
99
|
+
}
|
|
100
|
+
export declare class CordovaPopupNavigator {
|
|
101
|
+
prepare(params: NavigateParams): Promise<CordovaPopupWindow>;
|
|
102
|
+
}
|
|
103
|
+
export declare class CordovaIFrameNavigator {
|
|
104
|
+
prepare(params: NavigateParams): Promise<CordovaPopupWindow>;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=Navigator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navigator.d.ts","sourceRoot":"","sources":["../../../src/navigation/Navigator.ts"],"names":[],"mappings":"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"}
|