fastmcp 4.12.8 → 4.13.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/dist/FastMCP.cjs +2 -2
- package/dist/FastMCP.d.cts +2 -2
- package/dist/FastMCP.d.ts +2 -2
- package/dist/FastMCP.js +1 -1
- package/dist/{OAuthProvider-zVRjvkf8.d.cts → OAuthProvider-Bvt5a7yr.d.cts} +16 -0
- package/dist/{OAuthProvider-zVRjvkf8.d.ts → OAuthProvider-Bvt5a7yr.d.ts} +16 -0
- package/dist/auth/index.cjs +2 -2
- package/dist/auth/index.d.cts +2 -2
- package/dist/auth/index.d.ts +2 -2
- package/dist/auth/index.js +1 -1
- package/dist/{chunk-KMG3C24Z.cjs → chunk-5FVNY65M.cjs} +27 -13
- package/dist/chunk-5FVNY65M.cjs.map +1 -0
- package/dist/{chunk-Y7GSHCYB.js → chunk-ZOG7IPIX.js} +30 -16
- package/dist/chunk-ZOG7IPIX.js.map +1 -0
- package/dist/examples/custom-routes.cjs +1 -1
- package/dist/examples/custom-routes.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-KMG3C24Z.cjs.map +0 -1
- package/dist/chunk-Y7GSHCYB.js.map +0 -1
package/dist/FastMCP.cjs
CHANGED
|
@@ -24,7 +24,7 @@ var _chunkU36NARZGcjs = require('./chunk-U36NARZG.cjs');
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
var
|
|
27
|
+
var _chunk5FVNY65Mcjs = require('./chunk-5FVNY65M.cjs');
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
|
|
@@ -49,5 +49,5 @@ var _chunkKMG3C24Zcjs = require('./chunk-KMG3C24Z.cjs');
|
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
|
|
52
|
-
exports.AuthProvider =
|
|
52
|
+
exports.AuthProvider = _chunk5FVNY65Mcjs.AuthProvider; exports.AzureProvider = _chunk5FVNY65Mcjs.AzureProvider; exports.DiscoveryDocumentCache = _chunkU36NARZGcjs.DiscoveryDocumentCache; exports.FastMCP = _chunkU36NARZGcjs.FastMCP; exports.FastMCPError = _chunkU36NARZGcjs.FastMCPError; exports.FastMCPSession = _chunkU36NARZGcjs.FastMCPSession; exports.GitHubProvider = _chunk5FVNY65Mcjs.GitHubProvider; exports.GoogleProvider = _chunk5FVNY65Mcjs.GoogleProvider; exports.MEDIA_FETCH_TIMEOUT_MS = _chunkU36NARZGcjs.MEDIA_FETCH_TIMEOUT_MS; exports.OAuthProvider = _chunk5FVNY65Mcjs.OAuthProvider; exports.ServerState = _chunkU36NARZGcjs.ServerState; exports.SessionError = _chunkU36NARZGcjs.SessionError; exports.UnexpectedStateError = _chunkU36NARZGcjs.UnexpectedStateError; exports.UserError = _chunkU36NARZGcjs.UserError; exports.audioContent = _chunkU36NARZGcjs.audioContent; exports.getAuthSession = _chunk5FVNY65Mcjs.getAuthSession; exports.imageContent = _chunkU36NARZGcjs.imageContent; exports.jsonSchemaAdapter = _chunkU36NARZGcjs.jsonSchemaAdapter; exports.requireAll = _chunk5FVNY65Mcjs.requireAll; exports.requireAny = _chunk5FVNY65Mcjs.requireAny; exports.requireAuth = _chunk5FVNY65Mcjs.requireAuth; exports.requireRole = _chunk5FVNY65Mcjs.requireRole; exports.requireScopes = _chunk5FVNY65Mcjs.requireScopes;
|
|
53
53
|
//# sourceMappingURL=FastMCP.cjs.map
|
package/dist/FastMCP.d.cts
CHANGED
|
@@ -12,8 +12,8 @@ import { CorsOptions } from 'mcp-proxy';
|
|
|
12
12
|
export { CorsOptions } from 'mcp-proxy';
|
|
13
13
|
import { StrictEventEmitter } from 'strict-event-emitter-types';
|
|
14
14
|
import { z } from 'zod';
|
|
15
|
-
import { A as AuthProvider, O as OAuthSession, a as OAuthProxy } from './OAuthProvider-
|
|
16
|
-
export { j as AuthProviderConfig, b as AzureProvider, k as AzureProviderConfig, l as AzureSession, m as GenericOAuthProviderConfig, G as GitHubProvider, n as GitHubSession, c as GoogleProvider, o as GoogleSession, d as OAuthProvider, g as getAuthSession, r as requireAll, e as requireAny, f as requireAuth, h as requireRole, i as requireScopes } from './OAuthProvider-
|
|
15
|
+
import { A as AuthProvider, O as OAuthSession, a as OAuthProxy } from './OAuthProvider-Bvt5a7yr.cjs';
|
|
16
|
+
export { j as AuthProviderConfig, b as AzureProvider, k as AzureProviderConfig, l as AzureSession, m as GenericOAuthProviderConfig, G as GitHubProvider, n as GitHubSession, c as GoogleProvider, o as GoogleSession, d as OAuthProvider, g as getAuthSession, r as requireAll, e as requireAny, f as requireAuth, h as requireRole, i as requireScopes } from './OAuthProvider-Bvt5a7yr.cjs';
|
|
17
17
|
import 'node:http';
|
|
18
18
|
|
|
19
19
|
declare class DiscoveryDocumentCache {
|
package/dist/FastMCP.d.ts
CHANGED
|
@@ -12,8 +12,8 @@ import { CorsOptions } from 'mcp-proxy';
|
|
|
12
12
|
export { CorsOptions } from 'mcp-proxy';
|
|
13
13
|
import { StrictEventEmitter } from 'strict-event-emitter-types';
|
|
14
14
|
import { z } from 'zod';
|
|
15
|
-
import { A as AuthProvider, O as OAuthSession, a as OAuthProxy } from './OAuthProvider-
|
|
16
|
-
export { j as AuthProviderConfig, b as AzureProvider, k as AzureProviderConfig, l as AzureSession, m as GenericOAuthProviderConfig, G as GitHubProvider, n as GitHubSession, c as GoogleProvider, o as GoogleSession, d as OAuthProvider, g as getAuthSession, r as requireAll, e as requireAny, f as requireAuth, h as requireRole, i as requireScopes } from './OAuthProvider-
|
|
15
|
+
import { A as AuthProvider, O as OAuthSession, a as OAuthProxy } from './OAuthProvider-Bvt5a7yr.js';
|
|
16
|
+
export { j as AuthProviderConfig, b as AzureProvider, k as AzureProviderConfig, l as AzureSession, m as GenericOAuthProviderConfig, G as GitHubProvider, n as GitHubSession, c as GoogleProvider, o as GoogleSession, d as OAuthProvider, g as getAuthSession, r as requireAll, e as requireAny, f as requireAuth, h as requireRole, i as requireScopes } from './OAuthProvider-Bvt5a7yr.js';
|
|
17
17
|
import 'node:http';
|
|
18
18
|
|
|
19
19
|
declare class DiscoveryDocumentCache {
|
package/dist/FastMCP.js
CHANGED
|
@@ -205,6 +205,22 @@ interface OAuthProxyConfig {
|
|
|
205
205
|
* https URLs enables CWE-601 open-redirect / authorization-code theft.
|
|
206
206
|
*/
|
|
207
207
|
allowedRedirectUriPatterns?: string[];
|
|
208
|
+
/**
|
|
209
|
+
* Accept `code_challenge_method=plain` at /oauth/authorize (default: true).
|
|
210
|
+
*
|
|
211
|
+
* `plain` is the weaker PKCE mode by RFC 7636 §7.2: the challenge *is* the
|
|
212
|
+
* verifier, so anyone who observes the authorization request — a proxy, a
|
|
213
|
+
* server log, browser history — can replay a stolen authorization code. S256
|
|
214
|
+
* sends only a hash and has no such exposure. OAuth 2.1 §7.5.2 and the MCP
|
|
215
|
+
* authorization spec both require S256.
|
|
216
|
+
*
|
|
217
|
+
* Set to `false` to refuse `plain`: it is dropped from
|
|
218
|
+
* `codeChallengeMethodsSupported` in the discovery metadata, rejected with
|
|
219
|
+
* `invalid_request` at /oauth/authorize, and any code already issued under it
|
|
220
|
+
* is refused at /oauth/token. Recommended for new deployments; it stays on by
|
|
221
|
+
* default because turning it off breaks clients that still ask for `plain`.
|
|
222
|
+
*/
|
|
223
|
+
allowPlainPkce?: boolean;
|
|
208
224
|
/** Authorization code TTL in seconds (default: 300) */
|
|
209
225
|
authorizationCodeTtl?: number;
|
|
210
226
|
/** Base URL of this proxy server */
|
|
@@ -205,6 +205,22 @@ interface OAuthProxyConfig {
|
|
|
205
205
|
* https URLs enables CWE-601 open-redirect / authorization-code theft.
|
|
206
206
|
*/
|
|
207
207
|
allowedRedirectUriPatterns?: string[];
|
|
208
|
+
/**
|
|
209
|
+
* Accept `code_challenge_method=plain` at /oauth/authorize (default: true).
|
|
210
|
+
*
|
|
211
|
+
* `plain` is the weaker PKCE mode by RFC 7636 §7.2: the challenge *is* the
|
|
212
|
+
* verifier, so anyone who observes the authorization request — a proxy, a
|
|
213
|
+
* server log, browser history — can replay a stolen authorization code. S256
|
|
214
|
+
* sends only a hash and has no such exposure. OAuth 2.1 §7.5.2 and the MCP
|
|
215
|
+
* authorization spec both require S256.
|
|
216
|
+
*
|
|
217
|
+
* Set to `false` to refuse `plain`: it is dropped from
|
|
218
|
+
* `codeChallengeMethodsSupported` in the discovery metadata, rejected with
|
|
219
|
+
* `invalid_request` at /oauth/authorize, and any code already issued under it
|
|
220
|
+
* is refused at /oauth/token. Recommended for new deployments; it stays on by
|
|
221
|
+
* default because turning it off breaks clients that still ask for `plain`.
|
|
222
|
+
*/
|
|
223
|
+
allowPlainPkce?: boolean;
|
|
208
224
|
/** Authorization code TTL in seconds (default: 300) */
|
|
209
225
|
authorizationCodeTtl?: number;
|
|
210
226
|
/** Base URL of this proxy server */
|
package/dist/auth/index.cjs
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
var
|
|
27
|
+
var _chunk5FVNY65Mcjs = require('../chunk-5FVNY65M.cjs');
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
|
|
@@ -51,5 +51,5 @@ var _chunkKMG3C24Zcjs = require('../chunk-KMG3C24Z.cjs');
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
|
|
54
|
-
exports.AuthProvider =
|
|
54
|
+
exports.AuthProvider = _chunk5FVNY65Mcjs.AuthProvider; exports.AzureProvider = _chunk5FVNY65Mcjs.AzureProvider; exports.ConsentManager = _chunk5FVNY65Mcjs.ConsentManager; exports.DEFAULT_ACCESS_TOKEN_TTL = _chunk5FVNY65Mcjs.DEFAULT_ACCESS_TOKEN_TTL; exports.DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH = _chunk5FVNY65Mcjs.DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH; exports.DEFAULT_AUTHORIZATION_CODE_TTL = _chunk5FVNY65Mcjs.DEFAULT_AUTHORIZATION_CODE_TTL; exports.DEFAULT_REFRESH_TOKEN_TTL = _chunk5FVNY65Mcjs.DEFAULT_REFRESH_TOKEN_TTL; exports.DEFAULT_TRANSACTION_TTL = _chunk5FVNY65Mcjs.DEFAULT_TRANSACTION_TTL; exports.DiskStore = _chunk5FVNY65Mcjs.DiskStore; exports.EncryptedTokenStorage = _chunk5FVNY65Mcjs.EncryptedTokenStorage; exports.GitHubProvider = _chunk5FVNY65Mcjs.GitHubProvider; exports.GoogleProvider = _chunk5FVNY65Mcjs.GoogleProvider; exports.JWKSVerifier = _chunk5FVNY65Mcjs.JWKSVerifier; exports.JWTIssuer = _chunk5FVNY65Mcjs.JWTIssuer; exports.MemoryTokenStorage = _chunk5FVNY65Mcjs.MemoryTokenStorage; exports.OAuthProvider = _chunk5FVNY65Mcjs.OAuthProvider; exports.OAuthProxy = _chunk5FVNY65Mcjs.OAuthProxy; exports.OAuthProxyError = _chunk5FVNY65Mcjs.OAuthProxyError; exports.PKCEUtils = _chunk5FVNY65Mcjs.PKCEUtils; exports.getAuthSession = _chunk5FVNY65Mcjs.getAuthSession; exports.requireAll = _chunk5FVNY65Mcjs.requireAll; exports.requireAny = _chunk5FVNY65Mcjs.requireAny; exports.requireAuth = _chunk5FVNY65Mcjs.requireAuth; exports.requireRole = _chunk5FVNY65Mcjs.requireRole; exports.requireScopes = _chunk5FVNY65Mcjs.requireScopes;
|
|
55
55
|
//# sourceMappingURL=index.cjs.map
|
package/dist/auth/index.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { p as OAuthTransaction, C as ConsentData, T as TokenStorage, q as TokenVerifier, s as TokenVerificationResult, P as PKCEPair } from '../OAuthProvider-
|
|
2
|
-
export { A as AuthProvider, j as AuthProviderConfig, y as AuthorizationParams, b as AzureProvider, k as AzureProviderConfig, l as AzureSession, z as ClientCode, B as DCRClientMetadata, E as DCRRequest, F as DCRResponse, D as DEFAULT_ACCESS_TOKEN_TTL, u as DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH, v as DEFAULT_AUTHORIZATION_CODE_TTL, w as DEFAULT_REFRESH_TOKEN_TTL, x as DEFAULT_TRANSACTION_TTL, m as GenericOAuthProviderConfig, G as GitHubProvider, n as GitHubSession, c as GoogleProvider, o as GoogleSession, H as OAuthError, d as OAuthProvider, I as OAuthProviderConfig, a as OAuthProxy, J as OAuthProxyConfig, t as OAuthProxyError, O as OAuthSession, K as ProxyDCRClient, R as RefreshRequest, L as TokenMapping, M as TokenRequest, N as TokenResponse, U as UpstreamTokenSet, g as getAuthSession, r as requireAll, e as requireAny, f as requireAuth, h as requireRole, i as requireScopes } from '../OAuthProvider-
|
|
1
|
+
import { p as OAuthTransaction, C as ConsentData, T as TokenStorage, q as TokenVerifier, s as TokenVerificationResult, P as PKCEPair } from '../OAuthProvider-Bvt5a7yr.cjs';
|
|
2
|
+
export { A as AuthProvider, j as AuthProviderConfig, y as AuthorizationParams, b as AzureProvider, k as AzureProviderConfig, l as AzureSession, z as ClientCode, B as DCRClientMetadata, E as DCRRequest, F as DCRResponse, D as DEFAULT_ACCESS_TOKEN_TTL, u as DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH, v as DEFAULT_AUTHORIZATION_CODE_TTL, w as DEFAULT_REFRESH_TOKEN_TTL, x as DEFAULT_TRANSACTION_TTL, m as GenericOAuthProviderConfig, G as GitHubProvider, n as GitHubSession, c as GoogleProvider, o as GoogleSession, H as OAuthError, d as OAuthProvider, I as OAuthProviderConfig, a as OAuthProxy, J as OAuthProxyConfig, t as OAuthProxyError, O as OAuthSession, K as ProxyDCRClient, R as RefreshRequest, L as TokenMapping, M as TokenRequest, N as TokenResponse, U as UpstreamTokenSet, g as getAuthSession, r as requireAll, e as requireAny, f as requireAuth, h as requireRole, i as requireScopes } from '../OAuthProvider-Bvt5a7yr.cjs';
|
|
3
3
|
import 'node:http';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/auth/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { p as OAuthTransaction, C as ConsentData, T as TokenStorage, q as TokenVerifier, s as TokenVerificationResult, P as PKCEPair } from '../OAuthProvider-
|
|
2
|
-
export { A as AuthProvider, j as AuthProviderConfig, y as AuthorizationParams, b as AzureProvider, k as AzureProviderConfig, l as AzureSession, z as ClientCode, B as DCRClientMetadata, E as DCRRequest, F as DCRResponse, D as DEFAULT_ACCESS_TOKEN_TTL, u as DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH, v as DEFAULT_AUTHORIZATION_CODE_TTL, w as DEFAULT_REFRESH_TOKEN_TTL, x as DEFAULT_TRANSACTION_TTL, m as GenericOAuthProviderConfig, G as GitHubProvider, n as GitHubSession, c as GoogleProvider, o as GoogleSession, H as OAuthError, d as OAuthProvider, I as OAuthProviderConfig, a as OAuthProxy, J as OAuthProxyConfig, t as OAuthProxyError, O as OAuthSession, K as ProxyDCRClient, R as RefreshRequest, L as TokenMapping, M as TokenRequest, N as TokenResponse, U as UpstreamTokenSet, g as getAuthSession, r as requireAll, e as requireAny, f as requireAuth, h as requireRole, i as requireScopes } from '../OAuthProvider-
|
|
1
|
+
import { p as OAuthTransaction, C as ConsentData, T as TokenStorage, q as TokenVerifier, s as TokenVerificationResult, P as PKCEPair } from '../OAuthProvider-Bvt5a7yr.js';
|
|
2
|
+
export { A as AuthProvider, j as AuthProviderConfig, y as AuthorizationParams, b as AzureProvider, k as AzureProviderConfig, l as AzureSession, z as ClientCode, B as DCRClientMetadata, E as DCRRequest, F as DCRResponse, D as DEFAULT_ACCESS_TOKEN_TTL, u as DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH, v as DEFAULT_AUTHORIZATION_CODE_TTL, w as DEFAULT_REFRESH_TOKEN_TTL, x as DEFAULT_TRANSACTION_TTL, m as GenericOAuthProviderConfig, G as GitHubProvider, n as GitHubSession, c as GoogleProvider, o as GoogleSession, H as OAuthError, d as OAuthProvider, I as OAuthProviderConfig, a as OAuthProxy, J as OAuthProxyConfig, t as OAuthProxyError, O as OAuthSession, K as ProxyDCRClient, R as RefreshRequest, L as TokenMapping, M as TokenRequest, N as TokenResponse, U as UpstreamTokenSet, g as getAuthSession, r as requireAll, e as requireAny, f as requireAuth, h as requireRole, i as requireScopes } from '../OAuthProvider-Bvt5a7yr.js';
|
|
3
3
|
import 'node:http';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/auth/index.js
CHANGED
|
@@ -419,6 +419,16 @@ var ClaimsExtractor = (_class = class {
|
|
|
419
419
|
|
|
420
420
|
// src/auth/utils/consent.ts
|
|
421
421
|
|
|
422
|
+
|
|
423
|
+
// src/auth/utils/constantTime.ts
|
|
424
|
+
|
|
425
|
+
function equalsConstantTime(a, b) {
|
|
426
|
+
const bufA = Buffer.from(a, "utf8");
|
|
427
|
+
const bufB = Buffer.from(b, "utf8");
|
|
428
|
+
return bufA.length === bufB.length && _crypto.timingSafeEqual.call(void 0, bufA, bufB);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// src/auth/utils/consent.ts
|
|
422
432
|
var ConsentManager = class {
|
|
423
433
|
|
|
424
434
|
constructor(signingKey) {
|
|
@@ -671,9 +681,7 @@ var ConsentManager = class {
|
|
|
671
681
|
}
|
|
672
682
|
const payload = Buffer.from(payloadB64, "base64").toString("utf8");
|
|
673
683
|
const expectedSignature = this.sign(payload);
|
|
674
|
-
|
|
675
|
-
const expectedBuf = Buffer.from(expectedSignature);
|
|
676
|
-
if (actualBuf.length !== expectedBuf.length || !_crypto.timingSafeEqual.call(void 0, actualBuf, expectedBuf)) {
|
|
684
|
+
if (!equalsConstantTime(signature, expectedSignature)) {
|
|
677
685
|
return null;
|
|
678
686
|
}
|
|
679
687
|
const data = JSON.parse(payload);
|
|
@@ -805,9 +813,7 @@ var JWTIssuer = class {
|
|
|
805
813
|
}
|
|
806
814
|
const [headerB64, payloadB64, signatureB64] = parts;
|
|
807
815
|
const expectedSignature = this.sign(`${headerB64}.${payloadB64}`);
|
|
808
|
-
|
|
809
|
-
const expectedBuf = Buffer.from(expectedSignature);
|
|
810
|
-
if (actualBuf.length !== expectedBuf.length || !_crypto.timingSafeEqual.call(void 0, actualBuf, expectedBuf)) {
|
|
816
|
+
if (!signatureB64 || !equalsConstantTime(signatureB64, expectedSignature)) {
|
|
811
817
|
return {
|
|
812
818
|
error: "Invalid signature",
|
|
813
819
|
valid: false
|
|
@@ -955,11 +961,6 @@ var PKCEUtils = class _PKCEUtils {
|
|
|
955
961
|
return buffer.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
|
956
962
|
}
|
|
957
963
|
};
|
|
958
|
-
function equalsConstantTime(a, b) {
|
|
959
|
-
const bufA = Buffer.from(a, "utf8");
|
|
960
|
-
const bufB = Buffer.from(b, "utf8");
|
|
961
|
-
return bufA.length === bufB.length && _crypto.timingSafeEqual.call(void 0, bufA, bufB);
|
|
962
|
-
}
|
|
963
964
|
|
|
964
965
|
// src/auth/utils/tokenStore.ts
|
|
965
966
|
|
|
@@ -1159,6 +1160,7 @@ var OAuthProxy = (_class4 = class {
|
|
|
1159
1160
|
|
|
1160
1161
|
constructor(config) {;_class4.prototype.__init5.call(this);_class4.prototype.__init6.call(this);_class4.prototype.__init7.call(this);_class4.prototype.__init8.call(this);
|
|
1161
1162
|
this.config = {
|
|
1163
|
+
allowPlainPkce: true,
|
|
1162
1164
|
authorizationCodeTtl: DEFAULT_AUTHORIZATION_CODE_TTL,
|
|
1163
1165
|
consentRequired: true,
|
|
1164
1166
|
enableTokenSwap: true,
|
|
@@ -1233,6 +1235,12 @@ var OAuthProxy = (_class4 = class {
|
|
|
1233
1235
|
"code_challenge_method required when code_challenge is present"
|
|
1234
1236
|
);
|
|
1235
1237
|
}
|
|
1238
|
+
if (params.code_challenge_method === "plain" && !this.config.allowPlainPkce) {
|
|
1239
|
+
throw new OAuthProxyError(
|
|
1240
|
+
"invalid_request",
|
|
1241
|
+
"code_challenge_method 'plain' is not supported; use S256"
|
|
1242
|
+
);
|
|
1243
|
+
}
|
|
1236
1244
|
const transaction = await this.createTransaction(params);
|
|
1237
1245
|
if (this.config.consentRequired && !transaction.consentGiven) {
|
|
1238
1246
|
return this.consentManager.createConsentResponse(
|
|
@@ -1292,6 +1300,12 @@ var OAuthProxy = (_class4 = class {
|
|
|
1292
1300
|
"code_verifier required for PKCE"
|
|
1293
1301
|
);
|
|
1294
1302
|
}
|
|
1303
|
+
if (clientCode.codeChallengeMethod === "plain" && !this.config.allowPlainPkce) {
|
|
1304
|
+
throw new OAuthProxyError(
|
|
1305
|
+
"invalid_grant",
|
|
1306
|
+
"code_challenge_method 'plain' is not supported; use S256"
|
|
1307
|
+
);
|
|
1308
|
+
}
|
|
1295
1309
|
const valid = PKCEUtils.validateChallenge(
|
|
1296
1310
|
request.code_verifier,
|
|
1297
1311
|
clientCode.codeChallenge,
|
|
@@ -1345,7 +1359,7 @@ var OAuthProxy = (_class4 = class {
|
|
|
1345
1359
|
getAuthorizationServerMetadata() {
|
|
1346
1360
|
return {
|
|
1347
1361
|
authorizationEndpoint: `${this.config.baseUrl}/oauth/authorize`,
|
|
1348
|
-
codeChallengeMethodsSupported: ["S256", "plain"],
|
|
1362
|
+
codeChallengeMethodsSupported: this.config.allowPlainPkce ? ["S256", "plain"] : ["S256"],
|
|
1349
1363
|
grantTypesSupported: ["authorization_code", "refresh_token"],
|
|
1350
1364
|
issuer: this.config.baseUrl,
|
|
1351
1365
|
registrationEndpoint: `${this.config.baseUrl}/oauth/register`,
|
|
@@ -2802,4 +2816,4 @@ Original error: ${error.message}`
|
|
|
2802
2816
|
|
|
2803
2817
|
|
|
2804
2818
|
exports.getAuthSession = getAuthSession; exports.requireAll = requireAll; exports.requireAny = requireAny; exports.requireAuth = requireAuth; exports.requireRole = requireRole; exports.requireScopes = requireScopes; exports.DEFAULT_ACCESS_TOKEN_TTL = DEFAULT_ACCESS_TOKEN_TTL; exports.DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH = DEFAULT_ACCESS_TOKEN_TTL_NO_REFRESH; exports.DEFAULT_REFRESH_TOKEN_TTL = DEFAULT_REFRESH_TOKEN_TTL; exports.DEFAULT_AUTHORIZATION_CODE_TTL = DEFAULT_AUTHORIZATION_CODE_TTL; exports.DEFAULT_TRANSACTION_TTL = DEFAULT_TRANSACTION_TTL; exports.ConsentManager = ConsentManager; exports.JWTIssuer = JWTIssuer; exports.PKCEUtils = PKCEUtils; exports.EncryptedTokenStorage = EncryptedTokenStorage; exports.MemoryTokenStorage = MemoryTokenStorage; exports.OAuthProxy = OAuthProxy; exports.OAuthProxyError = OAuthProxyError; exports.AuthProvider = AuthProvider; exports.AzureProvider = AzureProvider; exports.GitHubProvider = GitHubProvider; exports.GoogleProvider = GoogleProvider; exports.OAuthProvider = OAuthProvider; exports.DiskStore = DiskStore; exports.JWKSVerifier = JWKSVerifier;
|
|
2805
|
-
//# sourceMappingURL=chunk-
|
|
2819
|
+
//# sourceMappingURL=chunk-5FVNY65M.cjs.map
|