@theia/request 1.77.0-next.95 → 1.77.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/lib/node-request-service.d.ts +5 -0
- package/lib/node-request-service.d.ts.map +1 -1
- package/lib/node-request-service.js +25 -8
- package/lib/node-request-service.js.map +1 -1
- package/lib/node-request-service.spec.js +64 -2
- package/lib/node-request-service.spec.js.map +1 -1
- package/lib/proxy.d.ts +2 -0
- package/lib/proxy.d.ts.map +1 -1
- package/lib/proxy.js +1 -1
- package/lib/proxy.js.map +1 -1
- package/package.json +10 -2
- package/src/node-request-service.spec.ts +74 -3
- package/src/node-request-service.ts +25 -9
- package/src/proxy.ts +3 -1
|
@@ -26,6 +26,11 @@ export declare class NodeRequestService implements RequestService {
|
|
|
26
26
|
protected getProxyUrl(url: string): Promise<string | undefined>;
|
|
27
27
|
configure(config: RequestConfiguration): Promise<void>;
|
|
28
28
|
protected processOptions(options: NodeRequestOptions): Promise<NodeRequestOptions>;
|
|
29
|
+
/**
|
|
30
|
+
* Removes a `Proxy-Authorization` header from the request options and returns its value.
|
|
31
|
+
* The header must not be sent: undici's `ProxyAgent` rejects it, and without a proxy it would reach the target server.
|
|
32
|
+
*/
|
|
33
|
+
protected takeProxyAuthorizationHeader(options: NodeRequestOptions): string | undefined;
|
|
29
34
|
request(options: NodeRequestOptions, token?: CancellationToken): Promise<RequestContext>;
|
|
30
35
|
resolveProxy(url: string): Promise<string | undefined>;
|
|
31
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-request-service.d.ts","sourceRoot":"","sources":["../src/node-request-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAW,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE5I,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACrD,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;cAEjB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/D,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;cAY5C,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"node-request-service.d.ts","sourceRoot":"","sources":["../src/node-request-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAW,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE5I,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACrD,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;cAEjB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/D,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;cAY5C,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgBxF;;;OAGG;IACH,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS;IAiBjF,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAoExF,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG/D"}
|
|
@@ -35,21 +35,38 @@ class NodeRequestService {
|
|
|
35
35
|
async processOptions(options) {
|
|
36
36
|
const { strictSSL } = this;
|
|
37
37
|
options.strictSSL = options.strictSSL ?? strictSSL;
|
|
38
|
+
const headerAuthorization = this.takeProxyAuthorizationHeader(options);
|
|
38
39
|
if (!options.dispatcher) {
|
|
40
|
+
// undici's ProxyAgent rejects a Proxy-Authorization request header, so the authorization goes to the agent
|
|
39
41
|
options.dispatcher = (0, proxy_1.getProxyAgent)(options.url || '', process.env, {
|
|
40
42
|
proxyUrl: await this.getProxyUrl(options.url),
|
|
41
|
-
strictSSL: options.strictSSL
|
|
43
|
+
strictSSL: options.strictSSL,
|
|
44
|
+
proxyAuthorization: options.proxyAuthorization || headerAuthorization || this.authorization
|
|
42
45
|
});
|
|
43
46
|
}
|
|
44
|
-
const authorization = options.proxyAuthorization || this.authorization;
|
|
45
|
-
if (authorization) {
|
|
46
|
-
options.headers = {
|
|
47
|
-
...(options.headers || {}),
|
|
48
|
-
'Proxy-Authorization': authorization
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
47
|
return options;
|
|
52
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Removes a `Proxy-Authorization` header from the request options and returns its value.
|
|
51
|
+
* The header must not be sent: undici's `ProxyAgent` rejects it, and without a proxy it would reach the target server.
|
|
52
|
+
*/
|
|
53
|
+
takeProxyAuthorizationHeader(options) {
|
|
54
|
+
if (!options.headers) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
let authorization;
|
|
58
|
+
const headers = {};
|
|
59
|
+
for (const [name, value] of Object.entries(options.headers)) {
|
|
60
|
+
if (name.toLowerCase() === 'proxy-authorization') {
|
|
61
|
+
authorization = value;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
headers[name] = value;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
options.headers = headers;
|
|
68
|
+
return authorization;
|
|
69
|
+
}
|
|
53
70
|
async request(options, token) {
|
|
54
71
|
options = await this.processOptions(options);
|
|
55
72
|
const headers = { ...(options.headers || {}) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-request-service.js","sourceRoot":"","sources":["../src/node-request-service.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAGlF,mCAAwC;AAQxC,MAAa,kBAAkB;IAKjB,KAAK,CAAC,WAAW,CAAC,GAAW;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAA4B;QACxC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACpC,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACtC,CAAC;QACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACnD,CAAC;IACL,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,OAA2B;QACtD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAC3B,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,UAAU,GAAG,IAAA,qBAAa,EAAC,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE;gBAC/D,QAAQ,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC7C,SAAS,EAAE,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"node-request-service.js","sourceRoot":"","sources":["../src/node-request-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -197,14 +197,76 @@ describe('NodeRequestService', () => {
|
|
|
197
197
|
});
|
|
198
198
|
// Just verify configuration doesn't throw
|
|
199
199
|
});
|
|
200
|
-
it('should
|
|
200
|
+
it('should not send the proxy authorization to the server when no proxy is used', async () => {
|
|
201
201
|
const configuredService = new node_request_service_1.NodeRequestService();
|
|
202
202
|
await configuredService.configure({
|
|
203
203
|
proxyAuthorization: 'Basic dGVzdDp0ZXN0'
|
|
204
204
|
});
|
|
205
205
|
const result = await configuredService.request({ url: url('/echo-headers') });
|
|
206
206
|
const headers = common_request_service_1.RequestContext.asJson(result);
|
|
207
|
-
(0, chai_1.expect)(headers['proxy-authorization']).to.
|
|
207
|
+
(0, chai_1.expect)(headers['proxy-authorization']).to.be.undefined;
|
|
208
|
+
});
|
|
209
|
+
it('should not send a Proxy-Authorization request header to the server', async () => {
|
|
210
|
+
const result = await service.request({ url: url('/echo-headers'), headers: { 'Proxy-Authorization': 'Basic dGVzdDp0ZXN0', 'X-Custom': 'kept' } });
|
|
211
|
+
const headers = common_request_service_1.RequestContext.asJson(result);
|
|
212
|
+
(0, chai_1.expect)(headers['proxy-authorization']).to.be.undefined;
|
|
213
|
+
(0, chai_1.expect)(headers['x-custom']).to.equal('kept');
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
describe('proxy authorization', () => {
|
|
217
|
+
let proxy;
|
|
218
|
+
let proxyUrl;
|
|
219
|
+
let tunnelAuthorizations;
|
|
220
|
+
before(done => {
|
|
221
|
+
// a proxy that refuses every tunnel, recording the authorization it was offered
|
|
222
|
+
proxy = http.createServer();
|
|
223
|
+
proxy.on('connect', (req, socket) => {
|
|
224
|
+
tunnelAuthorizations.push(req.headers['proxy-authorization']);
|
|
225
|
+
socket.end('HTTP/1.1 407 Proxy Authentication Required\r\n\r\n');
|
|
226
|
+
});
|
|
227
|
+
proxy.listen(0, () => {
|
|
228
|
+
proxyUrl = `http://localhost:${proxy.address().port}`;
|
|
229
|
+
done();
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
after(done => {
|
|
233
|
+
proxy.close(done);
|
|
234
|
+
});
|
|
235
|
+
beforeEach(() => {
|
|
236
|
+
tunnelAuthorizations = [];
|
|
237
|
+
});
|
|
238
|
+
async function requestThroughProxy(configuredService, options = {}) {
|
|
239
|
+
try {
|
|
240
|
+
await configuredService.request({ url: 'https://example.com/', ...options });
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
throw new Error('expected the proxy to refuse the tunnel');
|
|
246
|
+
}
|
|
247
|
+
it('should send the configured authorization to the proxy', async () => {
|
|
248
|
+
const configuredService = new node_request_service_1.NodeRequestService();
|
|
249
|
+
await configuredService.configure({ proxyUrl, proxyAuthorization: 'Basic dGVzdDp0ZXN0' });
|
|
250
|
+
await requestThroughProxy(configuredService);
|
|
251
|
+
(0, chai_1.expect)(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
|
|
252
|
+
});
|
|
253
|
+
it('should send the authorization of the request options to the proxy', async () => {
|
|
254
|
+
const configuredService = new node_request_service_1.NodeRequestService();
|
|
255
|
+
await configuredService.configure({ proxyUrl });
|
|
256
|
+
await requestThroughProxy(configuredService, { proxyAuthorization: 'Basic dGVzdDp0ZXN0' });
|
|
257
|
+
(0, chai_1.expect)(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
|
|
258
|
+
});
|
|
259
|
+
it('should send the authorization of a Proxy-Authorization request header to the proxy', async () => {
|
|
260
|
+
const configuredService = new node_request_service_1.NodeRequestService();
|
|
261
|
+
await configuredService.configure({ proxyUrl, proxyAuthorization: 'Basic configured' });
|
|
262
|
+
await requestThroughProxy(configuredService, { headers: { 'proxy-authorization': 'Basic dGVzdDp0ZXN0' } });
|
|
263
|
+
(0, chai_1.expect)(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
|
|
264
|
+
});
|
|
265
|
+
it('should prefer credentials in the proxy URL', async () => {
|
|
266
|
+
const configuredService = new node_request_service_1.NodeRequestService();
|
|
267
|
+
await configuredService.configure({ proxyUrl: proxyUrl.replace('http://', 'http://user:pass@'), proxyAuthorization: 'Basic ignored' });
|
|
268
|
+
await requestThroughProxy(configuredService);
|
|
269
|
+
(0, chai_1.expect)(tunnelAuthorizations).to.deep.equal([`Basic ${Buffer.from('user:pass').toString('base64')}`]);
|
|
208
270
|
});
|
|
209
271
|
});
|
|
210
272
|
describe('redirect handling', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-request-service.spec.js","sourceRoot":"","sources":["../src/node-request-service.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node-request-service.spec.js","sourceRoot":"","sources":["../src/node-request-service.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/proxy.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ import { Dispatcher } from 'undici';
|
|
|
17
17
|
export interface ProxySettings {
|
|
18
18
|
proxyUrl?: string;
|
|
19
19
|
strictSSL?: boolean;
|
|
20
|
+
/** Sent as `Proxy-Authorization` when the proxy URL carries no credentials of its own. */
|
|
21
|
+
proxyAuthorization?: string;
|
|
20
22
|
}
|
|
21
23
|
export declare function getProxyAgent(rawRequestURL: string, env: typeof process.env, options?: ProxySettings): Dispatcher | undefined;
|
|
22
24
|
//# sourceMappingURL=proxy.d.ts.map
|
package/lib/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAqB,UAAU,EAAE,MAAM,QAAQ,CAAC;AAYvD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAqB,UAAU,EAAE,MAAM,QAAQ,CAAC;AAYvD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,GAAE,aAAkB,GAAG,UAAU,GAAG,SAAS,CA0CjI"}
|
package/lib/proxy.js
CHANGED
|
@@ -57,7 +57,7 @@ function getProxyAgent(rawRequestURL, env, options = {}) {
|
|
|
57
57
|
uri: proxyURL,
|
|
58
58
|
token: proxyEndpoint.username
|
|
59
59
|
? `Basic ${Buffer.from(`${decodeURIComponent(proxyEndpoint.username)}:${decodeURIComponent(proxyEndpoint.password)}`).toString('base64')}`
|
|
60
|
-
:
|
|
60
|
+
: options.proxyAuthorization,
|
|
61
61
|
};
|
|
62
62
|
if (options.strictSSL === false) {
|
|
63
63
|
proxyAgentOptions.requestTls = { rejectUnauthorized: false };
|
package/lib/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;AAqBlF,sCA0CC;AA7DD,mCAAuD;AAEvD,SAAS,iBAAiB,CAAC,UAAe,EAAE,GAAuB;IAC/D,IAAI,UAAU,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC;IAC5C,CAAC;SAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC;IAClF,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AASD,SAAgB,aAAa,CAAC,aAAqB,EAAE,GAAuB,EAAE,UAAyB,EAAE;IACrG,IAAI,UAAe,CAAC;IACpB,IAAI,CAAC;QACD,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,IAAI,cAAK,CAAC;gBACb,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE;aACzC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,aAAkB,CAAC;IACvB,IAAI,CAAC;QACD,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,iBAAiB,GAAuB;QAC1C,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,aAAa,CAAC,QAAQ;YACzB,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC1I,CAAC,CAAC,OAAO,CAAC,kBAAkB;KACnC,CAAC;IAEF,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC9B,iBAAiB,CAAC,UAAU,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IAED,OAAO,IAAI,mBAAU,CAAC,iBAAiB,CAAC,CAAC;AAC7C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/request",
|
|
3
|
-
"version": "1.77.0
|
|
3
|
+
"version": "1.77.0",
|
|
4
4
|
"description": "Theia Proxy-Aware Request Service",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -20,6 +20,14 @@
|
|
|
20
20
|
],
|
|
21
21
|
"main": "lib/index.js",
|
|
22
22
|
"typings": "lib/index.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": "./lib/index.js",
|
|
25
|
+
"./package.json": "./package.json",
|
|
26
|
+
"./lib/*.json": "./lib/*.json",
|
|
27
|
+
"./lib/*.js": "./lib/*.js",
|
|
28
|
+
"./lib/*": "./lib/*.js",
|
|
29
|
+
"./*": "./*"
|
|
30
|
+
},
|
|
23
31
|
"scripts": {
|
|
24
32
|
"build": "theiaext build",
|
|
25
33
|
"clean": "theiaext clean",
|
|
@@ -32,5 +40,5 @@
|
|
|
32
40
|
"tslib": "^2.8.1",
|
|
33
41
|
"undici": "^7.29.1"
|
|
34
42
|
},
|
|
35
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "9c6d81590b559ee8a78a7808203674f3127411f1"
|
|
36
44
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { expect } from 'chai';
|
|
18
18
|
import * as http from 'http';
|
|
19
|
-
import { NodeRequestService } from './node-request-service';
|
|
19
|
+
import { NodeRequestOptions, NodeRequestService } from './node-request-service';
|
|
20
20
|
import { CancellationToken, RequestContext } from './common-request-service';
|
|
21
21
|
|
|
22
22
|
describe('NodeRequestService', () => {
|
|
@@ -203,14 +203,85 @@ describe('NodeRequestService', () => {
|
|
|
203
203
|
// Just verify configuration doesn't throw
|
|
204
204
|
});
|
|
205
205
|
|
|
206
|
-
it('should
|
|
206
|
+
it('should not send the proxy authorization to the server when no proxy is used', async () => {
|
|
207
207
|
const configuredService = new NodeRequestService();
|
|
208
208
|
await configuredService.configure({
|
|
209
209
|
proxyAuthorization: 'Basic dGVzdDp0ZXN0'
|
|
210
210
|
});
|
|
211
211
|
const result = await configuredService.request({ url: url('/echo-headers') });
|
|
212
212
|
const headers = RequestContext.asJson<Record<string, string>>(result);
|
|
213
|
-
expect(headers['proxy-authorization']).to.
|
|
213
|
+
expect(headers['proxy-authorization']).to.be.undefined;
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
it('should not send a Proxy-Authorization request header to the server', async () => {
|
|
217
|
+
const result = await service.request({ url: url('/echo-headers'), headers: { 'Proxy-Authorization': 'Basic dGVzdDp0ZXN0', 'X-Custom': 'kept' } });
|
|
218
|
+
const headers = RequestContext.asJson<Record<string, string>>(result);
|
|
219
|
+
expect(headers['proxy-authorization']).to.be.undefined;
|
|
220
|
+
expect(headers['x-custom']).to.equal('kept');
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
describe('proxy authorization', () => {
|
|
225
|
+
let proxy: http.Server;
|
|
226
|
+
let proxyUrl: string;
|
|
227
|
+
let tunnelAuthorizations: (string | undefined)[];
|
|
228
|
+
|
|
229
|
+
before(done => {
|
|
230
|
+
// a proxy that refuses every tunnel, recording the authorization it was offered
|
|
231
|
+
proxy = http.createServer();
|
|
232
|
+
proxy.on('connect', (req: http.IncomingMessage, socket) => {
|
|
233
|
+
tunnelAuthorizations.push(req.headers['proxy-authorization']);
|
|
234
|
+
socket.end('HTTP/1.1 407 Proxy Authentication Required\r\n\r\n');
|
|
235
|
+
});
|
|
236
|
+
proxy.listen(0, () => {
|
|
237
|
+
proxyUrl = `http://localhost:${(proxy.address() as { port: number }).port}`;
|
|
238
|
+
done();
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
after(done => {
|
|
243
|
+
proxy.close(done);
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
beforeEach(() => {
|
|
247
|
+
tunnelAuthorizations = [];
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
async function requestThroughProxy(configuredService: NodeRequestService, options: Partial<NodeRequestOptions> = {}): Promise<void> {
|
|
251
|
+
try {
|
|
252
|
+
await configuredService.request({ url: 'https://example.com/', ...options });
|
|
253
|
+
} catch {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
throw new Error('expected the proxy to refuse the tunnel');
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
it('should send the configured authorization to the proxy', async () => {
|
|
260
|
+
const configuredService = new NodeRequestService();
|
|
261
|
+
await configuredService.configure({ proxyUrl, proxyAuthorization: 'Basic dGVzdDp0ZXN0' });
|
|
262
|
+
await requestThroughProxy(configuredService);
|
|
263
|
+
expect(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
it('should send the authorization of the request options to the proxy', async () => {
|
|
267
|
+
const configuredService = new NodeRequestService();
|
|
268
|
+
await configuredService.configure({ proxyUrl });
|
|
269
|
+
await requestThroughProxy(configuredService, { proxyAuthorization: 'Basic dGVzdDp0ZXN0' });
|
|
270
|
+
expect(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
it('should send the authorization of a Proxy-Authorization request header to the proxy', async () => {
|
|
274
|
+
const configuredService = new NodeRequestService();
|
|
275
|
+
await configuredService.configure({ proxyUrl, proxyAuthorization: 'Basic configured' });
|
|
276
|
+
await requestThroughProxy(configuredService, { headers: { 'proxy-authorization': 'Basic dGVzdDp0ZXN0' } });
|
|
277
|
+
expect(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
it('should prefer credentials in the proxy URL', async () => {
|
|
281
|
+
const configuredService = new NodeRequestService();
|
|
282
|
+
await configuredService.configure({ proxyUrl: proxyUrl.replace('http://', 'http://user:pass@'), proxyAuthorization: 'Basic ignored' });
|
|
283
|
+
await requestThroughProxy(configuredService);
|
|
284
|
+
expect(tunnelAuthorizations).to.deep.equal([`Basic ${Buffer.from('user:pass').toString('base64')}`]);
|
|
214
285
|
});
|
|
215
286
|
});
|
|
216
287
|
|
|
@@ -47,24 +47,40 @@ export class NodeRequestService implements RequestService {
|
|
|
47
47
|
protected async processOptions(options: NodeRequestOptions): Promise<NodeRequestOptions> {
|
|
48
48
|
const { strictSSL } = this;
|
|
49
49
|
options.strictSSL = options.strictSSL ?? strictSSL;
|
|
50
|
+
const headerAuthorization = this.takeProxyAuthorizationHeader(options);
|
|
50
51
|
if (!options.dispatcher) {
|
|
52
|
+
// undici's ProxyAgent rejects a Proxy-Authorization request header, so the authorization goes to the agent
|
|
51
53
|
options.dispatcher = getProxyAgent(options.url || '', process.env, {
|
|
52
54
|
proxyUrl: await this.getProxyUrl(options.url),
|
|
53
|
-
strictSSL: options.strictSSL
|
|
55
|
+
strictSSL: options.strictSSL,
|
|
56
|
+
proxyAuthorization: options.proxyAuthorization || headerAuthorization || this.authorization
|
|
54
57
|
});
|
|
55
58
|
}
|
|
56
59
|
|
|
57
|
-
const authorization = options.proxyAuthorization || this.authorization;
|
|
58
|
-
if (authorization) {
|
|
59
|
-
options.headers = {
|
|
60
|
-
...(options.headers || {}),
|
|
61
|
-
'Proxy-Authorization': authorization
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
|
|
65
60
|
return options;
|
|
66
61
|
}
|
|
67
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Removes a `Proxy-Authorization` header from the request options and returns its value.
|
|
65
|
+
* The header must not be sent: undici's `ProxyAgent` rejects it, and without a proxy it would reach the target server.
|
|
66
|
+
*/
|
|
67
|
+
protected takeProxyAuthorizationHeader(options: NodeRequestOptions): string | undefined {
|
|
68
|
+
if (!options.headers) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
let authorization: string | undefined;
|
|
72
|
+
const headers: Headers = {};
|
|
73
|
+
for (const [name, value] of Object.entries(options.headers)) {
|
|
74
|
+
if (name.toLowerCase() === 'proxy-authorization') {
|
|
75
|
+
authorization = value;
|
|
76
|
+
} else {
|
|
77
|
+
headers[name] = value;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
options.headers = headers;
|
|
81
|
+
return authorization;
|
|
82
|
+
}
|
|
83
|
+
|
|
68
84
|
async request(options: NodeRequestOptions, token?: CancellationToken): Promise<RequestContext> {
|
|
69
85
|
options = await this.processOptions(options);
|
|
70
86
|
|
package/src/proxy.ts
CHANGED
|
@@ -29,6 +29,8 @@ function getSystemProxyURI(requestURL: URL, env: typeof process.env): string | u
|
|
|
29
29
|
export interface ProxySettings {
|
|
30
30
|
proxyUrl?: string;
|
|
31
31
|
strictSSL?: boolean;
|
|
32
|
+
/** Sent as `Proxy-Authorization` when the proxy URL carries no credentials of its own. */
|
|
33
|
+
proxyAuthorization?: string;
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
export function getProxyAgent(rawRequestURL: string, env: typeof process.env, options: ProxySettings = {}): Dispatcher | undefined {
|
|
@@ -65,7 +67,7 @@ export function getProxyAgent(rawRequestURL: string, env: typeof process.env, op
|
|
|
65
67
|
uri: proxyURL,
|
|
66
68
|
token: proxyEndpoint.username
|
|
67
69
|
? `Basic ${Buffer.from(`${decodeURIComponent(proxyEndpoint.username)}:${decodeURIComponent(proxyEndpoint.password)}`).toString('base64')}`
|
|
68
|
-
:
|
|
70
|
+
: options.proxyAuthorization,
|
|
69
71
|
};
|
|
70
72
|
|
|
71
73
|
if (options.strictSSL === false) {
|