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.
Files changed (91) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +240 -0
  3. package/dist/index.d.ts +21 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +21 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/auth/Client.d.ts +135 -0
  8. package/dist/src/auth/Client.d.ts.map +1 -0
  9. package/dist/src/auth/Client.js +734 -0
  10. package/dist/src/auth/Client.js.map +1 -0
  11. package/dist/src/auth/Events.d.ts +51 -0
  12. package/dist/src/auth/Events.d.ts.map +1 -0
  13. package/dist/src/auth/Events.js +139 -0
  14. package/dist/src/auth/Events.js.map +1 -0
  15. package/dist/src/auth/Session.d.ts +132 -0
  16. package/dist/src/auth/Session.d.ts.map +1 -0
  17. package/dist/src/auth/Session.js +355 -0
  18. package/dist/src/auth/Session.js.map +1 -0
  19. package/dist/src/auth/Settings.d.ts +178 -0
  20. package/dist/src/auth/Settings.d.ts.map +1 -0
  21. package/dist/src/auth/Settings.js +210 -0
  22. package/dist/src/auth/Settings.js.map +1 -0
  23. package/dist/src/crypto/Crypto.d.ts +14 -0
  24. package/dist/src/crypto/Crypto.d.ts.map +1 -0
  25. package/dist/src/crypto/Crypto.js +107 -0
  26. package/dist/src/crypto/Crypto.js.map +1 -0
  27. package/dist/src/models/User.d.ts +31 -0
  28. package/dist/src/models/User.d.ts.map +1 -0
  29. package/dist/src/models/User.js +57 -0
  30. package/dist/src/models/User.js.map +1 -0
  31. package/dist/src/navigation/Navigator.d.ts +106 -0
  32. package/dist/src/navigation/Navigator.d.ts.map +1 -0
  33. package/dist/src/navigation/Navigator.js +441 -0
  34. package/dist/src/navigation/Navigator.js.map +1 -0
  35. package/dist/src/protocol/Requests.d.ts +50 -0
  36. package/dist/src/protocol/Requests.d.ts.map +1 -0
  37. package/dist/src/protocol/Requests.js +109 -0
  38. package/dist/src/protocol/Requests.js.map +1 -0
  39. package/dist/src/protocol/ResponseValidator.d.ts +39 -0
  40. package/dist/src/protocol/ResponseValidator.d.ts.map +1 -0
  41. package/dist/src/protocol/ResponseValidator.js +366 -0
  42. package/dist/src/protocol/ResponseValidator.js.map +1 -0
  43. package/dist/src/protocol/Responses.d.ts +44 -0
  44. package/dist/src/protocol/Responses.d.ts.map +1 -0
  45. package/dist/src/protocol/Responses.js +77 -0
  46. package/dist/src/protocol/Responses.js.map +1 -0
  47. package/dist/src/protocol/TokenService.d.ts +38 -0
  48. package/dist/src/protocol/TokenService.d.ts.map +1 -0
  49. package/dist/src/protocol/TokenService.js +259 -0
  50. package/dist/src/protocol/TokenService.js.map +1 -0
  51. package/dist/src/services/Http.d.ts +55 -0
  52. package/dist/src/services/Http.d.ts.map +1 -0
  53. package/dist/src/services/Http.js +276 -0
  54. package/dist/src/services/Http.js.map +1 -0
  55. package/dist/src/services/Timer.d.ts +18 -0
  56. package/dist/src/services/Timer.d.ts.map +1 -0
  57. package/dist/src/services/Timer.js +56 -0
  58. package/dist/src/services/Timer.js.map +1 -0
  59. package/dist/src/storage/Storage.d.ts +23 -0
  60. package/dist/src/storage/Storage.d.ts.map +1 -0
  61. package/dist/src/storage/Storage.js +65 -0
  62. package/dist/src/storage/Storage.js.map +1 -0
  63. package/dist/src/types/crypto.d.ts +32 -0
  64. package/dist/src/types/crypto.d.ts.map +1 -0
  65. package/dist/src/types/crypto.js +3 -0
  66. package/dist/src/types/crypto.js.map +1 -0
  67. package/dist/src/types/navigator.d.ts +33 -0
  68. package/dist/src/types/navigator.d.ts.map +1 -0
  69. package/dist/src/types/navigator.js +3 -0
  70. package/dist/src/types/navigator.js.map +1 -0
  71. package/dist/src/types/storage.d.ts +7 -0
  72. package/dist/src/types/storage.d.ts.map +1 -0
  73. package/dist/src/types/storage.js +3 -0
  74. package/dist/src/types/storage.js.map +1 -0
  75. package/dist/src/types/user.d.ts +6 -0
  76. package/dist/src/types/user.d.ts.map +1 -0
  77. package/dist/src/types/user.js +3 -0
  78. package/dist/src/types/user.js.map +1 -0
  79. package/dist/src/utils/Event.d.ts +10 -0
  80. package/dist/src/utils/Event.d.ts.map +1 -0
  81. package/dist/src/utils/Event.js +24 -0
  82. package/dist/src/utils/Event.js.map +1 -0
  83. package/dist/src/utils/Global.d.ts +14 -0
  84. package/dist/src/utils/Global.d.ts.map +1 -0
  85. package/dist/src/utils/Global.js +50 -0
  86. package/dist/src/utils/Global.js.map +1 -0
  87. package/dist/src/utils/Log.d.ts +30 -0
  88. package/dist/src/utils/Log.d.ts.map +1 -0
  89. package/dist/src/utils/Log.js +68 -0
  90. package/dist/src/utils/Log.js.map +1 -0
  91. package/package.json +91 -0
@@ -0,0 +1,259 @@
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 { Global } from '../utils/Global.js';
4
+ import { JsonService, MetadataService } from '../services/Http.js';
5
+ import { JoseUtil } from '../crypto/Crypto.js';
6
+ //=============================================================================
7
+ // TokenClient
8
+ //=============================================================================
9
+ export class TokenClient {
10
+ constructor(settings, JsonServiceCtor = JsonService, MetadataServiceCtor = MetadataService) {
11
+ if (!settings) {
12
+ Log.error('TokenClient.ctor: No settings passed');
13
+ throw new Error('settings');
14
+ }
15
+ this._settings = settings;
16
+ this._jsonService = new JsonServiceCtor();
17
+ this._metadataService = new MetadataServiceCtor(this._settings);
18
+ }
19
+ exchangeCode(args = {}) {
20
+ args = Object.assign({}, args);
21
+ args.grant_type = args.grant_type || 'authorization_code';
22
+ args.client_id = args.client_id || this._settings.client_id;
23
+ args.client_secret = args.client_secret || this._settings.client_secret;
24
+ args.redirect_uri = args.redirect_uri || this._settings.redirect_uri;
25
+ let basicAuth;
26
+ const client_authentication = args._client_authentication || this._settings.client_authentication;
27
+ delete args._client_authentication;
28
+ if (!args.code) {
29
+ Log.error('TokenClient.exchangeCode: No code passed');
30
+ return Promise.reject(new Error('A code is required'));
31
+ }
32
+ if (!args.redirect_uri) {
33
+ Log.error('TokenClient.exchangeCode: No redirect_uri passed');
34
+ return Promise.reject(new Error('A redirect_uri is required'));
35
+ }
36
+ if (!args.code_verifier) {
37
+ Log.error('TokenClient.exchangeCode: No code_verifier passed');
38
+ return Promise.reject(new Error('A code_verifier is required'));
39
+ }
40
+ if (!args.client_id) {
41
+ Log.error('TokenClient.exchangeCode: No client_id passed');
42
+ return Promise.reject(new Error('A client_id is required'));
43
+ }
44
+ if (!args.client_secret && client_authentication === 'client_secret_basic') {
45
+ Log.error('TokenClient.exchangeCode: No client_secret passed');
46
+ return Promise.reject(new Error('A client_secret is required'));
47
+ }
48
+ if (client_authentication === 'client_secret_basic') {
49
+ basicAuth = args.client_id + ':' + args.client_secret;
50
+ delete args.client_id;
51
+ delete args.client_secret;
52
+ }
53
+ return this._metadataService.getTokenEndpoint(false).then(url => {
54
+ Log.debug('TokenClient.exchangeCode: Received token endpoint');
55
+ return this._jsonService.postForm(url, args, basicAuth).then(response => {
56
+ Log.debug('TokenClient.exchangeCode: response received');
57
+ return response;
58
+ });
59
+ });
60
+ }
61
+ exchangeRefreshToken(args = {}) {
62
+ args = Object.assign({}, args);
63
+ args.grant_type = args.grant_type || 'refresh_token';
64
+ args.client_id = args.client_id || this._settings.client_id;
65
+ args.client_secret = args.client_secret || this._settings.client_secret;
66
+ let basicAuth;
67
+ const client_authentication = args._client_authentication || this._settings.client_authentication;
68
+ delete args._client_authentication;
69
+ if (!args.refresh_token) {
70
+ Log.error('TokenClient.exchangeRefreshToken: No refresh_token passed');
71
+ return Promise.reject(new Error('A refresh_token is required'));
72
+ }
73
+ if (!args.client_id) {
74
+ Log.error('TokenClient.exchangeRefreshToken: No client_id passed');
75
+ return Promise.reject(new Error('A client_id is required'));
76
+ }
77
+ if (client_authentication === 'client_secret_basic') {
78
+ basicAuth = args.client_id + ':' + args.client_secret;
79
+ delete args.client_id;
80
+ delete args.client_secret;
81
+ }
82
+ return this._metadataService.getTokenEndpoint(false).then(url => {
83
+ Log.debug('TokenClient.exchangeRefreshToken: Received token endpoint');
84
+ return this._jsonService.postForm(url, args, basicAuth).then(response => {
85
+ Log.debug('TokenClient.exchangeRefreshToken: response received');
86
+ return response;
87
+ });
88
+ });
89
+ }
90
+ }
91
+ //=============================================================================
92
+ // TokenRevocationClient
93
+ //=============================================================================
94
+ const AccessTokenTypeHint = 'access_token';
95
+ const RefreshTokenTypeHint = 'refresh_token';
96
+ export class TokenRevocationClient {
97
+ constructor(settings, XMLHttpRequestCtor = Global.XMLHttpRequest, MetadataServiceCtor = MetadataService) {
98
+ if (!settings) {
99
+ Log.error('TokenRevocationClient.ctor: No settings provided');
100
+ throw new Error('No settings provided.');
101
+ }
102
+ this._settings = settings;
103
+ this._XMLHttpRequestCtor = XMLHttpRequestCtor;
104
+ this._metadataService = new MetadataServiceCtor(this._settings);
105
+ }
106
+ revoke(token, required, type = 'access_token') {
107
+ if (!token) {
108
+ Log.error('TokenRevocationClient.revoke: No token provided');
109
+ throw new Error('No token provided.');
110
+ }
111
+ if (type !== AccessTokenTypeHint && type !== RefreshTokenTypeHint) {
112
+ Log.error('TokenRevocationClient.revoke: Invalid token type');
113
+ throw new Error('Invalid token type.');
114
+ }
115
+ return this._metadataService.getRevocationEndpoint().then(url => {
116
+ if (!url) {
117
+ if (required) {
118
+ Log.error('TokenRevocationClient.revoke: Revocation not supported');
119
+ throw new Error('Revocation not supported');
120
+ }
121
+ return;
122
+ }
123
+ Log.debug('TokenRevocationClient.revoke: Revoking ' + type);
124
+ return this._revoke(url, this._settings.client_id, this._settings.client_secret, token, type);
125
+ });
126
+ }
127
+ _revoke(url, client_id, client_secret, token, type) {
128
+ return new Promise((resolve, reject) => {
129
+ const xhr = new this._XMLHttpRequestCtor();
130
+ xhr.open('POST', url);
131
+ xhr.onload = () => {
132
+ Log.debug('TokenRevocationClient.revoke: HTTP response received, status', xhr.status);
133
+ if (xhr.status === 200) {
134
+ resolve();
135
+ }
136
+ else {
137
+ reject(Error(xhr.statusText + ' (' + xhr.status + ')'));
138
+ }
139
+ };
140
+ xhr.onerror = () => {
141
+ Log.debug('TokenRevocationClient.revoke: Network Error.');
142
+ reject('Network Error');
143
+ };
144
+ let body = 'client_id=' + encodeURIComponent(client_id);
145
+ if (client_secret)
146
+ body += '&client_secret=' + encodeURIComponent(client_secret);
147
+ body += '&token_type_hint=' + encodeURIComponent(type);
148
+ body += '&token=' + encodeURIComponent(token);
149
+ xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
150
+ xhr.send(body);
151
+ });
152
+ }
153
+ }
154
+ //=============================================================================
155
+ // UserInfoService
156
+ //=============================================================================
157
+ export class UserInfoService {
158
+ constructor(settings, JsonServiceCtor = JsonService, MetadataServiceCtor = MetadataService, joseUtil = JoseUtil) {
159
+ if (!settings) {
160
+ Log.error('UserInfoService.ctor: No settings passed');
161
+ throw new Error('settings');
162
+ }
163
+ this._settings = settings;
164
+ this._jsonService = new JsonServiceCtor(undefined, undefined, this._getClaimsFromJwt.bind(this));
165
+ this._metadataService = new MetadataServiceCtor(this._settings);
166
+ this._joseUtil = joseUtil;
167
+ }
168
+ getClaims(token) {
169
+ if (!token) {
170
+ Log.error('UserInfoService.getClaims: No token passed');
171
+ return Promise.reject(new Error('A token is required'));
172
+ }
173
+ return this._metadataService.getUserInfoEndpoint().then(url => {
174
+ Log.debug('UserInfoService.getClaims: received userinfo url', url);
175
+ return this._jsonService.getJson(url, token).then(claims => {
176
+ Log.debug('UserInfoService.getClaims: claims received', claims);
177
+ return claims;
178
+ });
179
+ });
180
+ }
181
+ _getClaimsFromJwt(req) {
182
+ try {
183
+ const jwt = this._joseUtil.parseJwt(req.responseText);
184
+ if (!jwt?.header || !jwt?.payload) {
185
+ Log.error('UserInfoService._getClaimsFromJwt: Failed to parse JWT', jwt);
186
+ return Promise.reject(new Error('Failed to parse id_token'));
187
+ }
188
+ const kid = jwt.header.kid;
189
+ let issuerPromise;
190
+ switch (this._settings.userInfoJwtIssuer) {
191
+ case 'OP':
192
+ issuerPromise = this._metadataService.getIssuer();
193
+ break;
194
+ case 'ANY':
195
+ issuerPromise = Promise.resolve(jwt.payload.iss);
196
+ break;
197
+ default:
198
+ issuerPromise = Promise.resolve(this._settings.userInfoJwtIssuer);
199
+ break;
200
+ }
201
+ return issuerPromise.then(issuer => {
202
+ Log.debug('UserInfoService._getClaimsFromJwt: Received issuer:' + issuer);
203
+ return this._metadataService.getSigningKeys().then(keys => {
204
+ if (!keys) {
205
+ Log.error('UserInfoService._getClaimsFromJwt: No signing keys from metadata');
206
+ return Promise.reject(new Error('No signing keys from metadata'));
207
+ }
208
+ Log.debug('UserInfoService._getClaimsFromJwt: Received signing keys');
209
+ let key;
210
+ if (!kid) {
211
+ keys = this._filterByAlg(keys, jwt.header.alg ?? '');
212
+ if (keys.length > 1) {
213
+ Log.error('UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata');
214
+ return Promise.reject(new Error('No kid found in id_token and more than one key found in metadata'));
215
+ }
216
+ key = keys[0];
217
+ }
218
+ else {
219
+ key = keys.find((k) => k.kid === kid);
220
+ }
221
+ if (!key) {
222
+ Log.error('UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys');
223
+ return Promise.reject(new Error('No key matching kid or alg found in signing keys'));
224
+ }
225
+ const audience = this._settings.client_id;
226
+ const clockSkewInSeconds = this._settings.clockSkew;
227
+ Log.debug('UserInfoService._getClaimsFromJwt: Validating JWT; using clock skew (in seconds) of: ', clockSkewInSeconds);
228
+ return this._joseUtil.validateJwt(req.responseText, key, issuer, audience, clockSkewInSeconds, undefined, true)
229
+ .then(() => {
230
+ Log.debug('UserInfoService._getClaimsFromJwt: JWT validation successful');
231
+ return jwt.payload;
232
+ });
233
+ });
234
+ });
235
+ }
236
+ catch (e) {
237
+ Log.error('UserInfoService._getClaimsFromJwt: Error parsing JWT response', e.message);
238
+ return Promise.reject(e);
239
+ }
240
+ }
241
+ _filterByAlg(keys, alg) {
242
+ let kty = null;
243
+ if (alg.startsWith('RS'))
244
+ kty = 'RSA';
245
+ else if (alg.startsWith('PS'))
246
+ kty = 'PS';
247
+ else if (alg.startsWith('ES'))
248
+ kty = 'EC';
249
+ else {
250
+ Log.debug('UserInfoService._filterByAlg: alg not supported: ', alg);
251
+ return [];
252
+ }
253
+ Log.debug('UserInfoService._filterByAlg: Looking for keys that match kty: ', kty);
254
+ keys = keys.filter(k => k.kty === kty);
255
+ Log.debug('UserInfoService._filterByAlg: Number of keys that match kty: ', kty, keys.length);
256
+ return keys;
257
+ }
258
+ }
259
+ //# sourceMappingURL=TokenService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenService.js","sourceRoot":"","sources":["../../../src/protocol/TokenService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import type { JwkKey } from '../types/crypto.js';
2
+ export declare class UrlUtility {
3
+ static addQueryParam(url: string, name: string, value: string): string;
4
+ static parseUrlFragment(value: string | undefined, delimiter?: string, global?: {
5
+ location?: Location;
6
+ }): Record<string, string>;
7
+ }
8
+ type JwtHandler = (req: XMLHttpRequest) => Promise<any>;
9
+ export declare class JsonService {
10
+ private _contentTypes;
11
+ private _XMLHttpRequest;
12
+ private _jwtHandler;
13
+ constructor(additionalContentTypes?: string[] | null, XMLHttpRequestCtor?: typeof XMLHttpRequest, jwtHandler?: JwtHandler | null);
14
+ getJson(url: string, token?: string): Promise<any>;
15
+ postForm(url: string, payload: Record<string, any>, basicAuth?: string): Promise<any>;
16
+ }
17
+ export interface OidcMetadata {
18
+ issuer: string;
19
+ authorization_endpoint: string;
20
+ token_endpoint?: string;
21
+ userinfo_endpoint?: string;
22
+ end_session_endpoint?: string;
23
+ check_session_iframe?: string;
24
+ revocation_endpoint?: string;
25
+ jwks_uri?: string;
26
+ [key: string]: unknown;
27
+ }
28
+ export interface MetadataSettings {
29
+ authority?: string;
30
+ metadataUrl?: string;
31
+ metadata?: OidcMetadata;
32
+ metadataSeed?: Partial<OidcMetadata>;
33
+ signingKeys?: JwkKey[];
34
+ }
35
+ export declare class MetadataService {
36
+ private _settings;
37
+ private _jsonService;
38
+ private _metadataUrl;
39
+ constructor(settings: MetadataSettings, JsonServiceCtor?: typeof JsonService);
40
+ get metadataUrl(): string | undefined;
41
+ resetSigningKeys(): void;
42
+ getMetadata(): Promise<OidcMetadata>;
43
+ getIssuer(): Promise<string>;
44
+ getAuthorizationEndpoint(): Promise<string>;
45
+ getUserInfoEndpoint(): Promise<string>;
46
+ getTokenEndpoint(optional?: boolean): Promise<string | undefined>;
47
+ getCheckSessionIframe(): Promise<string | undefined>;
48
+ getEndSessionEndpoint(): Promise<string | undefined>;
49
+ getRevocationEndpoint(): Promise<string | undefined>;
50
+ getKeysEndpoint(): Promise<string | undefined>;
51
+ private _getMetadataProperty;
52
+ getSigningKeys(): Promise<any[]>;
53
+ }
54
+ export {};
55
+ //# sourceMappingURL=Http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Http.d.ts","sourceRoot":"","sources":["../../../src/services/Http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,276 @@
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 { Global } from '../utils/Global.js';
4
+ //=============================================================================
5
+ // UrlUtility
6
+ //=============================================================================
7
+ export class UrlUtility {
8
+ static addQueryParam(url, name, value) {
9
+ if (url.indexOf('?') < 0) {
10
+ url += '?';
11
+ }
12
+ if (url[url.length - 1] !== '?') {
13
+ url += '&';
14
+ }
15
+ url += encodeURIComponent(name) + '=' + encodeURIComponent(value);
16
+ return url;
17
+ }
18
+ static parseUrlFragment(value, delimiter = '#', global = Global) {
19
+ if (typeof value !== 'string') {
20
+ value = global.location?.href ?? '';
21
+ }
22
+ let idx = value.lastIndexOf(delimiter);
23
+ if (idx >= 0) {
24
+ value = value.substring(idx + 1);
25
+ }
26
+ if (delimiter === '?') {
27
+ idx = value.indexOf('#');
28
+ if (idx >= 0) {
29
+ value = value.substring(0, idx);
30
+ }
31
+ }
32
+ const params = {};
33
+ const regex = /([^&=]+)=([^&]*)/g;
34
+ let m;
35
+ let counter = 0;
36
+ while ((m = regex.exec(value))) {
37
+ params[decodeURIComponent(m[1])] = decodeURIComponent(m[2].replace(/\+/g, ' '));
38
+ if (counter++ > 50) {
39
+ Log.error('UrlUtility.parseUrlFragment: response exceeded expected number of parameters', value);
40
+ return { error: 'Response exceeded expected number of parameters' };
41
+ }
42
+ }
43
+ return params;
44
+ }
45
+ }
46
+ export class JsonService {
47
+ constructor(additionalContentTypes = null, XMLHttpRequestCtor = Global.XMLHttpRequest, jwtHandler = null) {
48
+ this._contentTypes = additionalContentTypes ? [...additionalContentTypes] : [];
49
+ this._contentTypes.push('application/json');
50
+ if (jwtHandler) {
51
+ this._contentTypes.push('application/jwt');
52
+ }
53
+ this._XMLHttpRequest = XMLHttpRequestCtor;
54
+ this._jwtHandler = jwtHandler;
55
+ }
56
+ getJson(url, token) {
57
+ if (!url) {
58
+ Log.error('JsonService.getJson: No url passed');
59
+ throw new Error('url');
60
+ }
61
+ Log.debug('JsonService.getJson, url: ', url);
62
+ return new Promise((resolve, reject) => {
63
+ const req = new this._XMLHttpRequest();
64
+ const _url = new URL(url);
65
+ _url.searchParams.append('_ts', String(Date.now()));
66
+ Log.debug('JsonService.getJson, cache buster url: ', _url.toString());
67
+ req.open('GET', _url.toString());
68
+ const allowedContentTypes = this._contentTypes;
69
+ const jwtHandler = this._jwtHandler;
70
+ req.onload = function () {
71
+ Log.debug('JsonService.getJson: HTTP response received, status', req.status);
72
+ if (req.status === 200) {
73
+ const contentType = req.getResponseHeader('Content-Type');
74
+ if (contentType) {
75
+ const found = allowedContentTypes.find(item => contentType.startsWith(item));
76
+ if (found === 'application/jwt') {
77
+ jwtHandler(req).then(resolve, reject);
78
+ return;
79
+ }
80
+ if (found) {
81
+ try {
82
+ resolve(JSON.parse(req.responseText));
83
+ return;
84
+ }
85
+ catch (e) {
86
+ Log.error('JsonService.getJson: Error parsing JSON response', e.message);
87
+ reject(e);
88
+ return;
89
+ }
90
+ }
91
+ }
92
+ reject(Error('Invalid response Content-Type: ' + contentType + ', from URL: ' + url));
93
+ }
94
+ else {
95
+ reject(Error(req.statusText + ' (' + req.status + ')'));
96
+ }
97
+ };
98
+ req.onerror = function () {
99
+ Log.error('JsonService.getJson: network error');
100
+ reject(Error('Network Error'));
101
+ };
102
+ if (token) {
103
+ Log.debug('JsonService.getJson: token passed, setting Authorization header');
104
+ req.setRequestHeader('Authorization', 'Bearer ' + token);
105
+ }
106
+ req.send();
107
+ });
108
+ }
109
+ postForm(url, payload, basicAuth) {
110
+ if (!url) {
111
+ Log.error('JsonService.postForm: No url passed');
112
+ throw new Error('url');
113
+ }
114
+ Log.debug('JsonService.postForm, url: ', url);
115
+ return new Promise((resolve, reject) => {
116
+ const req = new this._XMLHttpRequest();
117
+ req.open('POST', url);
118
+ const allowedContentTypes = this._contentTypes;
119
+ req.onload = function () {
120
+ Log.debug('JsonService.postForm: HTTP response received, status', req.status);
121
+ if (req.status === 200) {
122
+ const contentType = req.getResponseHeader('Content-Type');
123
+ if (contentType) {
124
+ const found = allowedContentTypes.find(item => contentType.startsWith(item));
125
+ if (found) {
126
+ try {
127
+ resolve(JSON.parse(req.responseText));
128
+ return;
129
+ }
130
+ catch (e) {
131
+ Log.error('JsonService.postForm: Error parsing JSON response', e.message);
132
+ reject(e);
133
+ return;
134
+ }
135
+ }
136
+ }
137
+ reject(Error('Invalid response Content-Type: ' + contentType + ', from URL: ' + url));
138
+ return;
139
+ }
140
+ if (req.status === 400) {
141
+ const contentType = req.getResponseHeader('Content-Type');
142
+ if (contentType) {
143
+ const found = allowedContentTypes.find(item => contentType.startsWith(item));
144
+ if (found) {
145
+ try {
146
+ const body = JSON.parse(req.responseText);
147
+ if (body?.error) {
148
+ Log.error('JsonService.postForm: Error from server: ', body.error);
149
+ reject(new Error(body.error));
150
+ return;
151
+ }
152
+ }
153
+ catch (e) {
154
+ Log.error('JsonService.postForm: Error parsing JSON response', e.message);
155
+ reject(e);
156
+ return;
157
+ }
158
+ }
159
+ }
160
+ }
161
+ reject(Error(req.statusText + ' (' + req.status + ')'));
162
+ };
163
+ req.onerror = function () {
164
+ Log.error('JsonService.postForm: network error');
165
+ reject(Error('Network Error'));
166
+ };
167
+ let body = '';
168
+ for (const key in payload) {
169
+ const value = payload[key];
170
+ if (value) {
171
+ if (body.length > 0)
172
+ body += '&';
173
+ body += encodeURIComponent(key) + '=' + encodeURIComponent(value);
174
+ }
175
+ }
176
+ req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
177
+ if (basicAuth !== undefined) {
178
+ req.setRequestHeader('Authorization', 'Basic ' + btoa(basicAuth));
179
+ }
180
+ req.send(body);
181
+ });
182
+ }
183
+ }
184
+ //=============================================================================
185
+ // MetadataService
186
+ //=============================================================================
187
+ const OidcMetadataUrlPath = '.well-known/openid-configuration';
188
+ export class MetadataService {
189
+ constructor(settings, JsonServiceCtor = JsonService) {
190
+ if (!settings) {
191
+ Log.error('MetadataService: No settings passed to MetadataService');
192
+ throw new Error('settings');
193
+ }
194
+ this._settings = settings;
195
+ this._jsonService = new JsonServiceCtor(['application/jwk-set+json']);
196
+ }
197
+ get metadataUrl() {
198
+ if (!this._metadataUrl) {
199
+ if (this._settings.metadataUrl) {
200
+ this._metadataUrl = this._settings.metadataUrl;
201
+ }
202
+ else {
203
+ this._metadataUrl = this._settings.authority;
204
+ if (this._metadataUrl && this._metadataUrl.indexOf(OidcMetadataUrlPath) < 0) {
205
+ if (this._metadataUrl[this._metadataUrl.length - 1] !== '/') {
206
+ this._metadataUrl += '/';
207
+ }
208
+ this._metadataUrl += OidcMetadataUrlPath;
209
+ }
210
+ }
211
+ }
212
+ return this._metadataUrl;
213
+ }
214
+ resetSigningKeys() {
215
+ this._settings.signingKeys = undefined;
216
+ }
217
+ getMetadata() {
218
+ if (this._settings.metadata) {
219
+ Log.debug('MetadataService.getMetadata: Returning metadata from settings');
220
+ return Promise.resolve(this._settings.metadata);
221
+ }
222
+ if (!this.metadataUrl) {
223
+ Log.error('MetadataService.getMetadata: No authority or metadataUrl configured on settings');
224
+ return Promise.reject(new Error('No authority or metadataUrl configured on settings'));
225
+ }
226
+ Log.debug('MetadataService.getMetadata: getting metadata from', this.metadataUrl);
227
+ return this._jsonService.getJson(this.metadataUrl).then(metadata => {
228
+ Log.debug('MetadataService.getMetadata: json received');
229
+ const seed = this._settings.metadataSeed || {};
230
+ this._settings.metadata = Object.assign({}, seed, metadata);
231
+ return this._settings.metadata;
232
+ });
233
+ }
234
+ getIssuer() { return this._getMetadataProperty('issuer'); }
235
+ getAuthorizationEndpoint() { return this._getMetadataProperty('authorization_endpoint'); }
236
+ getUserInfoEndpoint() { return this._getMetadataProperty('userinfo_endpoint'); }
237
+ getTokenEndpoint(optional = true) { return this._getMetadataProperty('token_endpoint', optional); }
238
+ getCheckSessionIframe() { return this._getMetadataProperty('check_session_iframe', true); }
239
+ getEndSessionEndpoint() { return this._getMetadataProperty('end_session_endpoint', true); }
240
+ getRevocationEndpoint() { return this._getMetadataProperty('revocation_endpoint', true); }
241
+ getKeysEndpoint() { return this._getMetadataProperty('jwks_uri', true); }
242
+ _getMetadataProperty(name, optional = false) {
243
+ Log.debug('MetadataService.getMetadataProperty for: ' + name);
244
+ return this.getMetadata().then(metadata => {
245
+ Log.debug('MetadataService.getMetadataProperty: metadata received');
246
+ if (metadata[name] === undefined) {
247
+ if (optional) {
248
+ Log.warn('MetadataService.getMetadataProperty: Metadata does not contain optional property ' + name);
249
+ return undefined;
250
+ }
251
+ Log.error('MetadataService.getMetadataProperty: Metadata does not contain property ' + name);
252
+ throw new Error('Metadata does not contain property ' + name);
253
+ }
254
+ return metadata[name];
255
+ });
256
+ }
257
+ getSigningKeys() {
258
+ if (this._settings.signingKeys) {
259
+ Log.debug('MetadataService.getSigningKeys: Returning signingKeys from settings');
260
+ return Promise.resolve(this._settings.signingKeys);
261
+ }
262
+ return this._getMetadataProperty('jwks_uri').then((jwks_uri) => {
263
+ Log.debug('MetadataService.getSigningKeys: jwks_uri received', jwks_uri);
264
+ return this._jsonService.getJson(jwks_uri).then(keySet => {
265
+ Log.debug('MetadataService.getSigningKeys: key set received', keySet);
266
+ if (!keySet.keys) {
267
+ Log.error('MetadataService.getSigningKeys: Missing keys on keyset');
268
+ throw new Error('Missing keys on keyset');
269
+ }
270
+ this._settings.signingKeys = keySet.keys;
271
+ return this._settings.signingKeys;
272
+ });
273
+ });
274
+ }
275
+ }
276
+ //# sourceMappingURL=Http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Http.js","sourceRoot":"","sources":["../../../src/services/Http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { TimerService } from '../utils/Global.js';
2
+ import { Event } from '../utils/Event.js';
3
+ export declare class Timer extends Event {
4
+ private _timer;
5
+ private _nowFunc;
6
+ private _expiration;
7
+ private _timerHandle;
8
+ constructor(name: string, timer?: TimerService, nowFunc?: () => number);
9
+ get now(): number;
10
+ get expiration(): number;
11
+ init(duration: number): void;
12
+ cancel(): void;
13
+ private _callback;
14
+ }
15
+ export declare class ClockService {
16
+ getEpochTime(): Promise<number>;
17
+ }
18
+ //# sourceMappingURL=Timer.d.ts.map