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,355 @@
|
|
|
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 { generateRandom } from '../crypto/Crypto.js';
|
|
4
|
+
import { CheckSessionIFrame } from '../navigation/Navigator.js';
|
|
5
|
+
import { Global } from '../utils/Global.js';
|
|
6
|
+
export class State {
|
|
7
|
+
constructor({ id, data, created, request_type } = {}) {
|
|
8
|
+
this._id = id || generateRandom();
|
|
9
|
+
this._data = data;
|
|
10
|
+
if (typeof created === 'number' && created > 0) {
|
|
11
|
+
this._created = created;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
this._created = Math.floor(Date.now() / 1000);
|
|
15
|
+
}
|
|
16
|
+
this._request_type = request_type;
|
|
17
|
+
}
|
|
18
|
+
get id() { return this._id; }
|
|
19
|
+
get data() { return this._data; }
|
|
20
|
+
get created() { return this._created; }
|
|
21
|
+
get request_type() { return this._request_type; }
|
|
22
|
+
toStorageString() {
|
|
23
|
+
Log.debug('State.toStorageString');
|
|
24
|
+
return JSON.stringify({
|
|
25
|
+
id: this.id,
|
|
26
|
+
data: this.data,
|
|
27
|
+
created: this.created,
|
|
28
|
+
request_type: this.request_type,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
static fromStorageString(storageString) {
|
|
32
|
+
Log.debug('State.fromStorageString');
|
|
33
|
+
return new State(JSON.parse(storageString));
|
|
34
|
+
}
|
|
35
|
+
static clearStaleState(storage, age) {
|
|
36
|
+
const cutoff = Date.now() / 1000 - age;
|
|
37
|
+
return storage.getAllKeys().then(keys => {
|
|
38
|
+
Log.debug('State.clearStaleState: got keys', keys);
|
|
39
|
+
const promises = [];
|
|
40
|
+
for (let i = 0; i < keys.length; i++) {
|
|
41
|
+
const key = keys[i];
|
|
42
|
+
const p = storage.get(key).then(item => {
|
|
43
|
+
let remove = false;
|
|
44
|
+
if (item) {
|
|
45
|
+
try {
|
|
46
|
+
const state = State.fromStorageString(item);
|
|
47
|
+
Log.debug('State.clearStaleState: got item from key: ', key, state.created);
|
|
48
|
+
if (state.created <= cutoff) {
|
|
49
|
+
remove = true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
Log.error('State.clearStaleState: Error parsing state for key', key, e.message);
|
|
54
|
+
remove = true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
Log.debug('State.clearStaleState: no item in storage for key: ', key);
|
|
59
|
+
remove = true;
|
|
60
|
+
}
|
|
61
|
+
if (remove) {
|
|
62
|
+
Log.debug('State.clearStaleState: removed item for key: ', key);
|
|
63
|
+
return storage.remove(key);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
promises.push(p);
|
|
67
|
+
}
|
|
68
|
+
Log.debug('State.clearStaleState: waiting on promise count:', promises.length);
|
|
69
|
+
return Promise.all(promises);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export class SigninState extends State {
|
|
74
|
+
constructor(args = {}) {
|
|
75
|
+
super(args);
|
|
76
|
+
const { nonce, authority, client_id, redirect_uri, code_verifier, code_challenge, response_mode, client_secret, scope, extraTokenParams, skipUserInfo } = args;
|
|
77
|
+
if (nonce === true) {
|
|
78
|
+
this._nonce = generateRandom();
|
|
79
|
+
}
|
|
80
|
+
else if (nonce) {
|
|
81
|
+
this._nonce = nonce;
|
|
82
|
+
}
|
|
83
|
+
if (code_verifier === true) {
|
|
84
|
+
this._code_verifier = generateRandom() + generateRandom() + generateRandom();
|
|
85
|
+
}
|
|
86
|
+
else if (code_verifier) {
|
|
87
|
+
this._code_verifier = code_verifier;
|
|
88
|
+
}
|
|
89
|
+
// code_challenge is pre-computed by createSigninRequest (async PKCE via jose)
|
|
90
|
+
// and passed in; never computed synchronously here.
|
|
91
|
+
this._code_challenge = code_challenge;
|
|
92
|
+
this._redirect_uri = redirect_uri;
|
|
93
|
+
this._authority = authority;
|
|
94
|
+
this._client_id = client_id;
|
|
95
|
+
this._response_mode = response_mode;
|
|
96
|
+
this._client_secret = client_secret;
|
|
97
|
+
this._scope = scope;
|
|
98
|
+
this._extraTokenParams = extraTokenParams;
|
|
99
|
+
this._skipUserInfo = skipUserInfo;
|
|
100
|
+
}
|
|
101
|
+
get nonce() { return this._nonce; }
|
|
102
|
+
get authority() { return this._authority; }
|
|
103
|
+
get client_id() { return this._client_id; }
|
|
104
|
+
get redirect_uri() { return this._redirect_uri; }
|
|
105
|
+
get code_verifier() { return this._code_verifier; }
|
|
106
|
+
get code_challenge() { return this._code_challenge; }
|
|
107
|
+
get response_mode() { return this._response_mode; }
|
|
108
|
+
get client_secret() { return this._client_secret; }
|
|
109
|
+
get scope() { return this._scope; }
|
|
110
|
+
get extraTokenParams() { return this._extraTokenParams; }
|
|
111
|
+
get skipUserInfo() { return this._skipUserInfo; }
|
|
112
|
+
toStorageString() {
|
|
113
|
+
Log.debug('SigninState.toStorageString');
|
|
114
|
+
return JSON.stringify({
|
|
115
|
+
id: this.id,
|
|
116
|
+
data: this.data,
|
|
117
|
+
created: this.created,
|
|
118
|
+
request_type: this.request_type,
|
|
119
|
+
nonce: this.nonce,
|
|
120
|
+
code_verifier: this.code_verifier,
|
|
121
|
+
redirect_uri: this.redirect_uri,
|
|
122
|
+
authority: this.authority,
|
|
123
|
+
client_id: this.client_id,
|
|
124
|
+
response_mode: this.response_mode,
|
|
125
|
+
client_secret: this.client_secret,
|
|
126
|
+
scope: this.scope,
|
|
127
|
+
extraTokenParams: this.extraTokenParams,
|
|
128
|
+
skipUserInfo: this.skipUserInfo,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
static fromStorageString(storageString) {
|
|
132
|
+
Log.debug('SigninState.fromStorageString');
|
|
133
|
+
const data = JSON.parse(storageString);
|
|
134
|
+
return new SigninState(data);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//=============================================================================
|
|
138
|
+
// SessionMonitor - Monitors user session state with check_session iframe
|
|
139
|
+
//=============================================================================
|
|
140
|
+
export class SessionMonitor {
|
|
141
|
+
constructor(userManager, CheckSessionIFrameCtor = CheckSessionIFrame, timer = Global.timer) {
|
|
142
|
+
if (!userManager) {
|
|
143
|
+
Log.error('SessionMonitor.ctor: No user manager passed to SessionMonitor');
|
|
144
|
+
throw new Error('userManager');
|
|
145
|
+
}
|
|
146
|
+
this._userManager = userManager;
|
|
147
|
+
this._CheckSessionIFrameCtor = CheckSessionIFrameCtor;
|
|
148
|
+
this._timer = timer;
|
|
149
|
+
this._userManager.events.addUserLoaded(this._start.bind(this));
|
|
150
|
+
this._userManager.events.addUserUnloaded(this._stop.bind(this));
|
|
151
|
+
Promise.resolve(this._userManager
|
|
152
|
+
.getUser()
|
|
153
|
+
.then(user => {
|
|
154
|
+
// doing this manually here since calling getUser
|
|
155
|
+
// doesn't trigger load event.
|
|
156
|
+
if (user) {
|
|
157
|
+
this._start(user);
|
|
158
|
+
}
|
|
159
|
+
else if (this._settings.monitorAnonymousSession) {
|
|
160
|
+
this._userManager
|
|
161
|
+
.querySessionStatus()
|
|
162
|
+
.then(session => {
|
|
163
|
+
if (session) {
|
|
164
|
+
const tmpUser = {
|
|
165
|
+
session_state: session.session_state,
|
|
166
|
+
};
|
|
167
|
+
if (session.sub && session.sid) {
|
|
168
|
+
tmpUser.profile = {
|
|
169
|
+
sub: session.sub,
|
|
170
|
+
sid: session.sid,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
this._start(tmpUser);
|
|
174
|
+
}
|
|
175
|
+
})
|
|
176
|
+
.catch(err => {
|
|
177
|
+
// catch to suppress errors since we're in a ctor
|
|
178
|
+
Log.error('SessionMonitor ctor: error from querySessionStatus:', err.message);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
})
|
|
182
|
+
.catch(err => {
|
|
183
|
+
// catch to suppress errors since we're in a ctor
|
|
184
|
+
Log.error('SessionMonitor ctor: error from getUser:', err.message);
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
get _settings() {
|
|
188
|
+
return this._userManager.settings;
|
|
189
|
+
}
|
|
190
|
+
get _metadataService() {
|
|
191
|
+
return this._userManager.metadataService;
|
|
192
|
+
}
|
|
193
|
+
get _client_id() {
|
|
194
|
+
return this._settings.client_id;
|
|
195
|
+
}
|
|
196
|
+
get _checkSessionInterval() {
|
|
197
|
+
return this._settings.checkSessionInterval;
|
|
198
|
+
}
|
|
199
|
+
get _stopCheckSessionOnError() {
|
|
200
|
+
return this._settings.stopCheckSessionOnError;
|
|
201
|
+
}
|
|
202
|
+
_start(user) {
|
|
203
|
+
const session_state = user.session_state;
|
|
204
|
+
if (session_state) {
|
|
205
|
+
if (user.profile) {
|
|
206
|
+
this._sub = user.profile.sub;
|
|
207
|
+
this._sid = user.profile.sid;
|
|
208
|
+
Log.debug('SessionMonitor._start: session_state:', session_state, ', sub:', this._sub);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
this._sub = undefined;
|
|
212
|
+
this._sid = undefined;
|
|
213
|
+
Log.debug('SessionMonitor._start: session_state:', session_state, ', anonymous user');
|
|
214
|
+
}
|
|
215
|
+
if (!this._checkSessionIFrame) {
|
|
216
|
+
this._metadataService
|
|
217
|
+
.getCheckSessionIframe()
|
|
218
|
+
.then(url => {
|
|
219
|
+
if (url) {
|
|
220
|
+
Log.debug('SessionMonitor._start: Initializing check session iframe');
|
|
221
|
+
const client_id = this._client_id;
|
|
222
|
+
const interval = this._checkSessionInterval;
|
|
223
|
+
const stopOnError = this._stopCheckSessionOnError;
|
|
224
|
+
this._checkSessionIFrame = new this._CheckSessionIFrameCtor(this._callback.bind(this), client_id, url, interval, stopOnError);
|
|
225
|
+
this._checkSessionIFrame.load().then(() => {
|
|
226
|
+
this._checkSessionIFrame.start(session_state);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
Log.warn('SessionMonitor._start: No check session iframe found in the metadata');
|
|
231
|
+
}
|
|
232
|
+
})
|
|
233
|
+
.catch(err => {
|
|
234
|
+
// catch to suppress errors since we're in non-promise callback
|
|
235
|
+
Log.error('SessionMonitor._start: Error from getCheckSessionIframe:', err.message);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
this._checkSessionIFrame.start(session_state);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
_stop() {
|
|
244
|
+
this._sub = undefined;
|
|
245
|
+
this._sid = undefined;
|
|
246
|
+
if (this._checkSessionIFrame) {
|
|
247
|
+
Log.debug('SessionMonitor._stop');
|
|
248
|
+
this._checkSessionIFrame.stop();
|
|
249
|
+
}
|
|
250
|
+
if (this._settings.monitorAnonymousSession) {
|
|
251
|
+
// using a timer to delay re-initialization to avoid race conditions during signout
|
|
252
|
+
const timerHandle = this._timer.setInterval(() => {
|
|
253
|
+
this._timer.clearInterval(timerHandle);
|
|
254
|
+
this._userManager
|
|
255
|
+
.querySessionStatus()
|
|
256
|
+
.then(session => {
|
|
257
|
+
if (session) {
|
|
258
|
+
const tmpUser = {
|
|
259
|
+
session_state: session.session_state,
|
|
260
|
+
};
|
|
261
|
+
if (session.sub && session.sid) {
|
|
262
|
+
tmpUser.profile = {
|
|
263
|
+
sub: session.sub,
|
|
264
|
+
sid: session.sid,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
this._start(tmpUser);
|
|
268
|
+
}
|
|
269
|
+
})
|
|
270
|
+
.catch(err => {
|
|
271
|
+
// catch to suppress errors since we're in a callback
|
|
272
|
+
Log.error('SessionMonitor: error from querySessionStatus:', err.message);
|
|
273
|
+
});
|
|
274
|
+
}, 1000);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
_callback() {
|
|
278
|
+
this._userManager
|
|
279
|
+
.querySessionStatus()
|
|
280
|
+
.then(session => {
|
|
281
|
+
let raiseEvent = true;
|
|
282
|
+
if (session) {
|
|
283
|
+
if (session.sub === this._sub) {
|
|
284
|
+
raiseEvent = false;
|
|
285
|
+
this._checkSessionIFrame.start(session.session_state);
|
|
286
|
+
if (session.sid === this._sid) {
|
|
287
|
+
Log.debug('SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:', session.session_state);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
Log.debug('SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:', session.session_state);
|
|
291
|
+
this._userManager.events._raiseUserSessionChanged();
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
Log.debug('SessionMonitor._callback: Different subject signed into OP:', session.sub);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
Log.debug('SessionMonitor._callback: Subject no longer signed into OP');
|
|
300
|
+
}
|
|
301
|
+
if (raiseEvent) {
|
|
302
|
+
if (this._sub) {
|
|
303
|
+
Log.debug('SessionMonitor._callback: SessionMonitor._callback; raising signed out event');
|
|
304
|
+
this._userManager.events._raiseUserSignedOut();
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
Log.debug('SessionMonitor._callback: SessionMonitor._callback; raising signed in event');
|
|
308
|
+
this._userManager.events._raiseUserSignedIn();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
})
|
|
312
|
+
.catch(err => {
|
|
313
|
+
if (this._sub) {
|
|
314
|
+
Log.debug('SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event', err.message);
|
|
315
|
+
this._userManager.events._raiseUserSignedOut();
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
export class SilentRenewService {
|
|
321
|
+
constructor(userManager) {
|
|
322
|
+
this._userManager = userManager;
|
|
323
|
+
}
|
|
324
|
+
start() {
|
|
325
|
+
if (!this._callback) {
|
|
326
|
+
this._callback = this._tokenExpiring.bind(this);
|
|
327
|
+
this._userManager.events.addAccessTokenExpiring(this._callback);
|
|
328
|
+
// this will trigger loading of the user so the expiring events can be initialized
|
|
329
|
+
this._userManager
|
|
330
|
+
.getUser()
|
|
331
|
+
.then(_user => {
|
|
332
|
+
// deliberate nop
|
|
333
|
+
})
|
|
334
|
+
.catch(err => {
|
|
335
|
+
// catch to suppress errors since we're in a ctor
|
|
336
|
+
Log.error('SilentRenewService.start: Error from getUser:', err.message);
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
stop() {
|
|
341
|
+
if (this._callback) {
|
|
342
|
+
this._userManager.events.removeAccessTokenExpiring(this._callback);
|
|
343
|
+
delete this._callback;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
_tokenExpiring() {
|
|
347
|
+
this._userManager.signinSilent().then(_user => {
|
|
348
|
+
Log.debug('SilentRenewService._tokenExpiring: Silent token renewal successful');
|
|
349
|
+
}, (err) => {
|
|
350
|
+
Log.error('SilentRenewService._tokenExpiring: Error from signinSilent:', err.message);
|
|
351
|
+
this._userManager.events._raiseSilentRenewError(err);
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=Session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Session.js","sourceRoot":"","sources":["../../../src/auth/Session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { ClockService } from '../services/Timer.js';
|
|
2
|
+
import { ResponseValidator } from '../protocol/ResponseValidator.js';
|
|
3
|
+
import { MetadataService } from '../services/Http.js';
|
|
4
|
+
import { RedirectNavigator, PopupNavigator, IFrameNavigator } from '../navigation/Navigator.js';
|
|
5
|
+
import type { OidcMetadata } from '../services/Http.js';
|
|
6
|
+
import type { JwkKey } from '../types/crypto.js';
|
|
7
|
+
import type { StateStore } from '../types/storage.js';
|
|
8
|
+
export interface OidcClientSettingsArgs {
|
|
9
|
+
authority?: string;
|
|
10
|
+
metadataUrl?: string;
|
|
11
|
+
metadata?: OidcMetadata;
|
|
12
|
+
signingKeys?: JwkKey[];
|
|
13
|
+
metadataSeed?: Partial<OidcMetadata>;
|
|
14
|
+
client_id?: string;
|
|
15
|
+
client_secret?: string;
|
|
16
|
+
response_type?: string;
|
|
17
|
+
scope?: string;
|
|
18
|
+
redirect_uri?: string;
|
|
19
|
+
post_logout_redirect_uri?: string;
|
|
20
|
+
client_authentication?: string;
|
|
21
|
+
prompt?: string;
|
|
22
|
+
display?: string;
|
|
23
|
+
max_age?: number;
|
|
24
|
+
ui_locales?: string;
|
|
25
|
+
acr_values?: string;
|
|
26
|
+
resource?: string;
|
|
27
|
+
response_mode?: string | null;
|
|
28
|
+
filterProtocolClaims?: boolean;
|
|
29
|
+
loadUserInfo?: boolean;
|
|
30
|
+
staleStateAge?: number;
|
|
31
|
+
clockSkew?: number;
|
|
32
|
+
clockService?: ClockService;
|
|
33
|
+
userInfoJwtIssuer?: string;
|
|
34
|
+
mergeClaims?: boolean;
|
|
35
|
+
stateStore?: StateStore;
|
|
36
|
+
ResponseValidatorCtor?: typeof ResponseValidator;
|
|
37
|
+
MetadataServiceCtor?: typeof MetadataService;
|
|
38
|
+
extraQueryParams?: Record<string, string>;
|
|
39
|
+
extraTokenParams?: Record<string, unknown>;
|
|
40
|
+
}
|
|
41
|
+
export declare class OidcClientSettings {
|
|
42
|
+
private _authority;
|
|
43
|
+
private _metadataUrl;
|
|
44
|
+
private _metadata;
|
|
45
|
+
private _metadataSeed;
|
|
46
|
+
private _signingKeys;
|
|
47
|
+
private _client_id;
|
|
48
|
+
private _client_secret;
|
|
49
|
+
private _response_type;
|
|
50
|
+
private _scope;
|
|
51
|
+
private _redirect_uri;
|
|
52
|
+
private _post_logout_redirect_uri;
|
|
53
|
+
private _client_authentication;
|
|
54
|
+
private _prompt;
|
|
55
|
+
private _display;
|
|
56
|
+
private _max_age;
|
|
57
|
+
private _ui_locales;
|
|
58
|
+
private _acr_values;
|
|
59
|
+
private _resource;
|
|
60
|
+
private _response_mode;
|
|
61
|
+
private _filterProtocolClaims;
|
|
62
|
+
private _loadUserInfo;
|
|
63
|
+
private _staleStateAge;
|
|
64
|
+
private _clockSkew;
|
|
65
|
+
private _clockService;
|
|
66
|
+
private _userInfoJwtIssuer;
|
|
67
|
+
private _mergeClaims;
|
|
68
|
+
private _stateStore;
|
|
69
|
+
private _validator;
|
|
70
|
+
private _metadataService;
|
|
71
|
+
private _extraQueryParams;
|
|
72
|
+
private _extraTokenParams;
|
|
73
|
+
constructor({ authority, metadataUrl, metadata, signingKeys, metadataSeed, client_id, client_secret, response_type, scope, redirect_uri, post_logout_redirect_uri, client_authentication, prompt, display, max_age, ui_locales, acr_values, resource, response_mode, filterProtocolClaims, loadUserInfo, staleStateAge, clockSkew, clockService, userInfoJwtIssuer, mergeClaims, stateStore, ResponseValidatorCtor, MetadataServiceCtor, extraQueryParams, extraTokenParams, }?: OidcClientSettingsArgs);
|
|
74
|
+
get client_id(): string | undefined;
|
|
75
|
+
set client_id(value: string | undefined);
|
|
76
|
+
get client_secret(): string | undefined;
|
|
77
|
+
get response_type(): string;
|
|
78
|
+
get scope(): string;
|
|
79
|
+
get redirect_uri(): string | undefined;
|
|
80
|
+
get post_logout_redirect_uri(): string | undefined;
|
|
81
|
+
get client_authentication(): string;
|
|
82
|
+
get prompt(): string | undefined;
|
|
83
|
+
get display(): string | undefined;
|
|
84
|
+
get max_age(): number | undefined;
|
|
85
|
+
get ui_locales(): string | undefined;
|
|
86
|
+
get acr_values(): string | undefined;
|
|
87
|
+
get resource(): string | undefined;
|
|
88
|
+
get response_mode(): string | null | undefined;
|
|
89
|
+
get authority(): string | undefined;
|
|
90
|
+
set authority(value: string | undefined);
|
|
91
|
+
get metadataUrl(): string | undefined;
|
|
92
|
+
get metadata(): OidcMetadata | undefined;
|
|
93
|
+
set metadata(value: OidcMetadata | undefined);
|
|
94
|
+
get metadataSeed(): Partial<OidcMetadata> | undefined;
|
|
95
|
+
set metadataSeed(value: Partial<OidcMetadata> | undefined);
|
|
96
|
+
get signingKeys(): JwkKey[] | undefined;
|
|
97
|
+
set signingKeys(value: JwkKey[] | undefined);
|
|
98
|
+
get filterProtocolClaims(): boolean;
|
|
99
|
+
get loadUserInfo(): boolean;
|
|
100
|
+
get staleStateAge(): number;
|
|
101
|
+
get clockSkew(): number;
|
|
102
|
+
get userInfoJwtIssuer(): string;
|
|
103
|
+
get mergeClaims(): boolean;
|
|
104
|
+
get stateStore(): StateStore;
|
|
105
|
+
get validator(): ResponseValidator;
|
|
106
|
+
get metadataService(): MetadataService;
|
|
107
|
+
get extraQueryParams(): Record<string, string>;
|
|
108
|
+
set extraQueryParams(value: Record<string, string>);
|
|
109
|
+
get extraTokenParams(): Record<string, unknown>;
|
|
110
|
+
set extraTokenParams(value: Record<string, unknown>);
|
|
111
|
+
getEpochTime(): Promise<number>;
|
|
112
|
+
}
|
|
113
|
+
export interface UserManagerSettingsArgs extends OidcClientSettingsArgs {
|
|
114
|
+
popup_redirect_uri?: string;
|
|
115
|
+
popup_post_logout_redirect_uri?: string;
|
|
116
|
+
popupWindowFeatures?: string;
|
|
117
|
+
popupWindowTarget?: string;
|
|
118
|
+
silent_redirect_uri?: string;
|
|
119
|
+
silentRequestTimeout?: number;
|
|
120
|
+
automaticSilentRenew?: boolean;
|
|
121
|
+
validateSubOnSilentRenew?: boolean;
|
|
122
|
+
includeIdTokenInSilentRenew?: boolean;
|
|
123
|
+
accessTokenExpiringNotificationTime?: number;
|
|
124
|
+
monitorSession?: boolean;
|
|
125
|
+
monitorAnonymousSession?: boolean;
|
|
126
|
+
checkSessionInterval?: number;
|
|
127
|
+
stopCheckSessionOnError?: boolean;
|
|
128
|
+
query_status_response_type?: string;
|
|
129
|
+
revokeAccessTokenOnSignout?: boolean;
|
|
130
|
+
redirectNavigator?: RedirectNavigator;
|
|
131
|
+
popupNavigator?: PopupNavigator;
|
|
132
|
+
iframeNavigator?: IFrameNavigator;
|
|
133
|
+
userStore?: StateStore;
|
|
134
|
+
}
|
|
135
|
+
export declare class UserManagerSettings extends OidcClientSettings {
|
|
136
|
+
private _popup_redirect_uri;
|
|
137
|
+
private _popup_post_logout_redirect_uri;
|
|
138
|
+
private _popupWindowFeatures;
|
|
139
|
+
private _popupWindowTarget;
|
|
140
|
+
private _silent_redirect_uri;
|
|
141
|
+
private _silentRequestTimeout;
|
|
142
|
+
private _automaticSilentRenew;
|
|
143
|
+
private _validateSubOnSilentRenew;
|
|
144
|
+
private _includeIdTokenInSilentRenew;
|
|
145
|
+
private _accessTokenExpiringNotificationTime;
|
|
146
|
+
private _monitorSession;
|
|
147
|
+
private _monitorAnonymousSession;
|
|
148
|
+
private _checkSessionInterval;
|
|
149
|
+
private _stopCheckSessionOnError;
|
|
150
|
+
private _query_status_response_type;
|
|
151
|
+
private _revokeAccessTokenOnSignout;
|
|
152
|
+
private _redirectNavigator;
|
|
153
|
+
private _popupNavigator;
|
|
154
|
+
private _iframeNavigator;
|
|
155
|
+
private _userStore;
|
|
156
|
+
constructor(settings?: UserManagerSettingsArgs);
|
|
157
|
+
get popup_redirect_uri(): string | undefined;
|
|
158
|
+
get popup_post_logout_redirect_uri(): string | undefined;
|
|
159
|
+
get popupWindowFeatures(): string | undefined;
|
|
160
|
+
get popupWindowTarget(): string | undefined;
|
|
161
|
+
get silent_redirect_uri(): string | undefined;
|
|
162
|
+
get silentRequestTimeout(): number | undefined;
|
|
163
|
+
get automaticSilentRenew(): boolean;
|
|
164
|
+
get validateSubOnSilentRenew(): boolean;
|
|
165
|
+
get includeIdTokenInSilentRenew(): boolean;
|
|
166
|
+
get accessTokenExpiringNotificationTime(): number;
|
|
167
|
+
get monitorSession(): boolean;
|
|
168
|
+
get monitorAnonymousSession(): boolean;
|
|
169
|
+
get checkSessionInterval(): number;
|
|
170
|
+
get stopCheckSessionOnError(): boolean;
|
|
171
|
+
get query_status_response_type(): string;
|
|
172
|
+
get revokeAccessTokenOnSignout(): boolean;
|
|
173
|
+
get redirectNavigator(): RedirectNavigator;
|
|
174
|
+
get popupNavigator(): PopupNavigator;
|
|
175
|
+
get iframeNavigator(): IFrameNavigator;
|
|
176
|
+
get userStore(): StateStore;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=Settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Settings.d.ts","sourceRoot":"","sources":["../../../src/auth/Settings.ts"],"names":[],"mappings":"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"}
|