zuplo 6.72.3 → 6.72.8
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/docs/analytics/access-and-entitlements.md +27 -34
- package/docs/analytics/overview.md +7 -6
- package/docs/analytics/reference/url-parameters.md +2 -10
- package/docs/analytics/shared-controls.md +3 -10
- package/docs/analytics/tabs/agents.md +3 -3
- package/docs/analytics/tabs/requests.md +2 -4
- package/docs/articles/connect-to-aws-alb-with-mtls.mdx +89 -13
- package/docs/articles/ddos-protection.mdx +2 -2
- package/docs/articles/graphql-security.mdx +2 -1
- package/docs/articles/graphql.mdx +8 -0
- package/docs/articles/limits.mdx +12 -0
- package/docs/articles/local-development-troubleshooting.mdx +12 -3
- package/docs/articles/opentelemetry.mdx +7 -5
- package/docs/articles/securing-backend-mtls.mdx +92 -3
- package/docs/articles/troubleshooting-slow-responses.mdx +4 -3
- package/docs/articles/troubleshooting.md +3 -1
- package/docs/articles/waf-ddos.mdx +1 -24
- package/docs/policies/_index.md +2 -0
- package/docs/policies/akamai-ai-firewall/schema.json +1 -0
- package/docs/policies/akamai-firewall-for-ai-inbound/schema.json +2 -0
- package/docs/policies/akamai-firewall-for-ai-outbound/schema.json +2 -0
- package/docs/policies/amberflo-metering-inbound/schema.json +5 -2
- package/docs/policies/api-key-inbound/schema.json +11 -5
- package/docs/policies/audit-log-inbound/schema.json +2 -0
- package/docs/policies/auth0-jwt-auth-inbound/schema.json +7 -5
- package/docs/policies/authzen-inbound/schema.json +7 -5
- package/docs/policies/axiomatics-authz-inbound/schema.json +14 -6
- package/docs/policies/basic-auth-inbound/schema.json +2 -1
- package/docs/policies/caching-inbound/schema.json +20 -16
- package/docs/policies/clerk-jwt-auth-inbound/schema.json +8 -6
- package/docs/policies/cognito-jwt-auth-inbound/schema.json +7 -5
- package/docs/policies/comet-opik-tracing-inbound/schema.json +1 -0
- package/docs/policies/complex-rate-limit-inbound/schema.json +4 -0
- package/docs/policies/curity-phantom-token-inbound/schema.json +1 -0
- package/docs/policies/data-loss-prevention-inbound/schema.json +15 -12
- package/docs/policies/data-loss-prevention-outbound/schema.json +15 -12
- package/docs/policies/firebase-jwt-inbound/schema.json +7 -5
- package/docs/policies/formdata-to-json-inbound/schema.json +1 -0
- package/docs/policies/galileo-tracing-inbound/schema.json +1 -0
- package/docs/policies/geo-filter-inbound/schema.json +1 -0
- package/docs/policies/graphql-analytics-outbound/schema.json +1 -0
- package/docs/policies/mcp-auth0-oauth-inbound/schema.json +11 -5
- package/docs/policies/mcp-clerk-oauth-inbound/schema.json +81 -0
- package/docs/policies/mcp-cognito-oauth-inbound/schema.json +81 -0
- package/docs/policies/mcp-entra-oauth-inbound/schema.json +81 -0
- package/docs/policies/mcp-google-oauth-inbound/schema.json +81 -0
- package/docs/policies/mcp-keycloak-oauth-inbound/schema.json +81 -0
- package/docs/policies/mcp-logto-oauth-inbound/schema.json +81 -0
- package/docs/policies/mcp-oauth-inbound/schema.json +10 -5
- package/docs/policies/mcp-okta-oauth-inbound/schema.json +81 -0
- package/docs/policies/mcp-onelogin-oauth-inbound/schema.json +81 -0
- package/docs/policies/mcp-ping-oauth-inbound/schema.json +81 -0
- package/docs/policies/mcp-token-exchange-inbound/doc.md +72 -4
- package/docs/policies/mcp-token-exchange-inbound/intro.md +5 -4
- package/docs/policies/mcp-token-exchange-inbound/schema.json +287 -7
- package/docs/policies/mcp-workos-oauth-inbound/schema.json +81 -0
- package/docs/policies/monetization-inbound/schema.json +25 -23
- package/docs/policies/mtls-auth-inbound/schema.json +6 -5
- package/docs/policies/okta-fga-authz-inbound/schema.json +7 -6
- package/docs/policies/okta-jwt-auth-inbound/schema.json +7 -5
- package/docs/policies/open-id-jwt-auth-inbound/schema.json +14 -9
- package/docs/policies/openfga-authz-inbound/schema.json +7 -6
- package/docs/policies/openmeter-inbound/schema.json +23 -19
- package/docs/policies/prompt-injection-outbound/schema.json +6 -5
- package/docs/policies/propel-auth-jwt-inbound/schema.json +10 -8
- package/docs/policies/query-param-to-header-inbound/schema.json +1 -0
- package/docs/policies/quota-inbound/schema.json +9 -6
- package/docs/policies/rate-limit-inbound/schema.json +4 -0
- package/docs/policies/readme-metrics-inbound/schema.json +9 -5
- package/docs/policies/request-size-limit-inbound/schema.json +1 -0
- package/docs/policies/request-validation-inbound/schema.json +8 -6
- package/docs/policies/require-origin-inbound/schema.json +1 -0
- package/docs/policies/semantic-cache-inbound/schema.json +9 -5
- package/docs/policies/set-status-outbound/schema.json +1 -0
- package/docs/policies/set-upstream-api-key-inbound/schema.json +7 -5
- package/docs/policies/stripe-webhook-verification-inbound/schema.json +2 -1
- package/docs/policies/supabase-jwt-auth-inbound/schema.json +7 -5
- package/docs/policies/traffic-splitting-inbound/schema.json +1 -0
- package/docs/policies/upstream-aws-federated-auth-inbound/doc.md +78 -0
- package/docs/policies/upstream-aws-federated-auth-inbound/intro.md +20 -0
- package/docs/policies/upstream-aws-federated-auth-inbound/schema.json +104 -0
- package/docs/policies/upstream-aws-service-auth-inbound/doc.md +89 -0
- package/docs/policies/upstream-aws-service-auth-inbound/intro.md +19 -0
- package/docs/policies/upstream-aws-service-auth-inbound/schema.json +121 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +7 -5
- package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +2 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +8 -5
- package/docs/policies/upstream-gcp-federated-auth-inbound/doc.md +2 -2
- package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +8 -4
- package/docs/policies/upstream-gcp-service-auth-inbound/doc.md +3 -3
- package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +8 -3
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +39 -15
- package/docs/policies/web-bot-auth-inbound/schema.json +2 -0
- package/docs/policies/xml-to-json-outbound/schema.json +9 -5
- package/package.json +4 -4
- package/docs/articles/zuplo-waf.mdx +0 -156
|
@@ -34,6 +34,38 @@
|
|
|
34
34
|
"description": "The options for this policy.",
|
|
35
35
|
"additionalProperties": false,
|
|
36
36
|
"required": ["displayName", "authMode"],
|
|
37
|
+
"if": {
|
|
38
|
+
"properties": {
|
|
39
|
+
"authMode": {
|
|
40
|
+
"const": "id-jag"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"required": ["authMode"]
|
|
44
|
+
},
|
|
45
|
+
"then": {
|
|
46
|
+
"required": ["idJag"],
|
|
47
|
+
"not": {
|
|
48
|
+
"anyOf": [
|
|
49
|
+
{
|
|
50
|
+
"required": ["scopes"]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"required": ["scopeDelimiter"]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"required": ["prompt"]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"required": ["clientRegistration"]
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"else": {
|
|
65
|
+
"not": {
|
|
66
|
+
"required": ["idJag"]
|
|
67
|
+
}
|
|
68
|
+
},
|
|
37
69
|
"properties": {
|
|
38
70
|
"id": {
|
|
39
71
|
"type": "string",
|
|
@@ -50,15 +82,10 @@
|
|
|
50
82
|
"examples": ["Native Linear remote MCP server."],
|
|
51
83
|
"description": "Optional human-readable summary of the upstream, shown on the consent page."
|
|
52
84
|
},
|
|
53
|
-
"protectedResourceMetadataUrl": {
|
|
54
|
-
"type": "string",
|
|
55
|
-
"format": "uri",
|
|
56
|
-
"description": "Optional override for the upstream's OAuth protected-resource metadata URL. Defaults from the route handler's rewritePattern."
|
|
57
|
-
},
|
|
58
85
|
"authMode": {
|
|
59
86
|
"type": "string",
|
|
60
|
-
"enum": ["user-oauth", "shared-oauth"],
|
|
61
|
-
"description": "Authentication mode. `user-oauth` performs per-user OAuth federation; `shared-oauth` uses a gateway-wide OAuth grant."
|
|
87
|
+
"enum": ["user-oauth", "shared-oauth", "id-jag"],
|
|
88
|
+
"description": "Authentication mode. `user-oauth` performs per-user OAuth federation; `shared-oauth` uses a gateway-wide OAuth grant; `id-jag` exchanges the caller's identity assertion at the configured IdP for an ID-JAG (Identity Assertion JWT Authorization Grant, also known as Cross-App Access / XAA), then redeems it at the upstream Resource Authorization Server for an upstream access token."
|
|
62
89
|
},
|
|
63
90
|
"scopes": {
|
|
64
91
|
"type": "array",
|
|
@@ -67,11 +94,19 @@
|
|
|
67
94
|
"type": "string"
|
|
68
95
|
}
|
|
69
96
|
},
|
|
97
|
+
"protectedResourceMetadataUrl": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"format": "uri",
|
|
100
|
+
"x-advanced": true,
|
|
101
|
+
"description": "Optional override for the upstream's OAuth protected-resource metadata URL. Defaults from the route handler's rewritePattern."
|
|
102
|
+
},
|
|
70
103
|
"scopeDelimiter": {
|
|
71
104
|
"type": "string",
|
|
105
|
+
"x-advanced": true,
|
|
72
106
|
"description": "Delimiter used to join scopes in the OAuth authorization request. Defaults to a single space."
|
|
73
107
|
},
|
|
74
108
|
"prompt": {
|
|
109
|
+
"x-advanced": true,
|
|
75
110
|
"description": "Overrides the OIDC `prompt` parameter on upstream authorization requests. The MCP SDK adds `prompt=consent` whenever the requested scope includes `offline_access`, which forces a consent screen on every authorization on providers like Microsoft Entra ID even after a tenant admin has granted org-wide admin consent. Leave unset to keep the SDK's behavior; set to `false` to strip the `prompt` parameter; set an explicit value to replace it. Warning: stripping `prompt=consent` while requesting `offline_access` can silently prevent refresh-token issuance on providers that require a fresh consent grant for offline access (e.g. Google) — only use this when the provider grants offline access via pre-authorized/admin consent (e.g. Entra tenant admin consent).",
|
|
76
111
|
"oneOf": [
|
|
77
112
|
{
|
|
@@ -85,6 +120,7 @@
|
|
|
85
120
|
]
|
|
86
121
|
},
|
|
87
122
|
"clientRegistration": {
|
|
123
|
+
"x-advanced": true,
|
|
88
124
|
"description": "OAuth client registration mode. Defaults to `auto`, which uses Client ID Metadata Documents when the upstream advertises support and falls back to Dynamic Client Registration otherwise.",
|
|
89
125
|
"oneOf": [
|
|
90
126
|
{
|
|
@@ -126,6 +162,244 @@
|
|
|
126
162
|
}
|
|
127
163
|
}
|
|
128
164
|
]
|
|
165
|
+
},
|
|
166
|
+
"idJag": {
|
|
167
|
+
"type": "object",
|
|
168
|
+
"additionalProperties": false,
|
|
169
|
+
"required": ["idp", "resourceAs"],
|
|
170
|
+
"x-advanced": true,
|
|
171
|
+
"description": "ID-JAG (Cross-App Access / XAA) token-exchange configuration. Required when `authMode` is `id-jag`; not used by the OAuth modes.",
|
|
172
|
+
"properties": {
|
|
173
|
+
"scopes": {
|
|
174
|
+
"type": "array",
|
|
175
|
+
"default": [],
|
|
176
|
+
"description": "Scopes to request on the ID-JAG token exchange at the IdP.",
|
|
177
|
+
"items": {
|
|
178
|
+
"type": "string"
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"scopeDelimiter": {
|
|
182
|
+
"type": "string",
|
|
183
|
+
"default": " ",
|
|
184
|
+
"description": "Delimiter used to join scopes in the token-exchange request. Defaults to a single space."
|
|
185
|
+
},
|
|
186
|
+
"idp": {
|
|
187
|
+
"type": "object",
|
|
188
|
+
"additionalProperties": false,
|
|
189
|
+
"required": ["tokenUrl", "clientAuth"],
|
|
190
|
+
"description": "The identity provider that exchanges the caller's identity assertion for an ID-JAG.",
|
|
191
|
+
"properties": {
|
|
192
|
+
"tokenUrl": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"format": "uri",
|
|
195
|
+
"description": "The IdP token endpoint used for the ID-JAG token exchange."
|
|
196
|
+
},
|
|
197
|
+
"clientAuth": {
|
|
198
|
+
"description": "Client authentication used at the token endpoint.",
|
|
199
|
+
"oneOf": [
|
|
200
|
+
{
|
|
201
|
+
"type": "object",
|
|
202
|
+
"additionalProperties": false,
|
|
203
|
+
"required": ["method", "clientId", "clientSecret"],
|
|
204
|
+
"properties": {
|
|
205
|
+
"method": {
|
|
206
|
+
"type": "string",
|
|
207
|
+
"const": "client_secret_post"
|
|
208
|
+
},
|
|
209
|
+
"clientId": {
|
|
210
|
+
"type": "string"
|
|
211
|
+
},
|
|
212
|
+
"clientSecret": {
|
|
213
|
+
"type": "string",
|
|
214
|
+
"examples": ["$env(IDP_CLIENT_SECRET)"],
|
|
215
|
+
"description": "OAuth client secret. Use `$env(VAR_NAME)` to source from an environment variable."
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"type": "object",
|
|
221
|
+
"additionalProperties": false,
|
|
222
|
+
"required": ["method", "clientId", "clientSecret"],
|
|
223
|
+
"properties": {
|
|
224
|
+
"method": {
|
|
225
|
+
"type": "string",
|
|
226
|
+
"const": "client_secret_basic"
|
|
227
|
+
},
|
|
228
|
+
"clientId": {
|
|
229
|
+
"type": "string"
|
|
230
|
+
},
|
|
231
|
+
"clientSecret": {
|
|
232
|
+
"type": "string",
|
|
233
|
+
"examples": ["$env(IDP_CLIENT_SECRET)"],
|
|
234
|
+
"description": "OAuth client secret. Use `$env(VAR_NAME)` to source from an environment variable."
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"type": "object",
|
|
240
|
+
"additionalProperties": false,
|
|
241
|
+
"required": ["method", "clientId", "privateKeyPem"],
|
|
242
|
+
"properties": {
|
|
243
|
+
"method": {
|
|
244
|
+
"type": "string",
|
|
245
|
+
"const": "private_key_jwt"
|
|
246
|
+
},
|
|
247
|
+
"clientId": {
|
|
248
|
+
"type": "string"
|
|
249
|
+
},
|
|
250
|
+
"privateKeyPem": {
|
|
251
|
+
"type": "string",
|
|
252
|
+
"examples": ["$env(IDP_PRIVATE_KEY_PEM)"],
|
|
253
|
+
"description": "PEM-encoded private key used to sign the client assertion. Use `$env(VAR_NAME)` to source from an environment variable."
|
|
254
|
+
},
|
|
255
|
+
"algorithm": {
|
|
256
|
+
"type": "string",
|
|
257
|
+
"enum": [
|
|
258
|
+
"RS256",
|
|
259
|
+
"RS384",
|
|
260
|
+
"RS512",
|
|
261
|
+
"ES256",
|
|
262
|
+
"ES384",
|
|
263
|
+
"ES512"
|
|
264
|
+
],
|
|
265
|
+
"default": "RS256",
|
|
266
|
+
"description": "JWS algorithm used to sign the client assertion."
|
|
267
|
+
},
|
|
268
|
+
"keyId": {
|
|
269
|
+
"type": "string",
|
|
270
|
+
"description": "Optional `kid` header set on the client assertion, for providers that select the verification key by key id."
|
|
271
|
+
},
|
|
272
|
+
"audience": {
|
|
273
|
+
"type": "string",
|
|
274
|
+
"format": "uri",
|
|
275
|
+
"description": "Optional override for the client assertion `aud` claim. Defaults to the token endpoint URL."
|
|
276
|
+
},
|
|
277
|
+
"expiresInSeconds": {
|
|
278
|
+
"type": "integer",
|
|
279
|
+
"default": 300,
|
|
280
|
+
"minimum": 1,
|
|
281
|
+
"maximum": 3600,
|
|
282
|
+
"description": "Client assertion lifetime in seconds."
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
]
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
"resourceAs": {
|
|
291
|
+
"type": "object",
|
|
292
|
+
"additionalProperties": false,
|
|
293
|
+
"required": ["tokenUrl", "audience", "clientAuth"],
|
|
294
|
+
"description": "The upstream Resource Authorization Server that redeems the ID-JAG for an upstream access token.",
|
|
295
|
+
"properties": {
|
|
296
|
+
"tokenUrl": {
|
|
297
|
+
"type": "string",
|
|
298
|
+
"format": "uri",
|
|
299
|
+
"description": "The Resource Authorization Server token endpoint where the gateway redeems the ID-JAG via the jwt-bearer grant."
|
|
300
|
+
},
|
|
301
|
+
"audience": {
|
|
302
|
+
"type": "string",
|
|
303
|
+
"description": "The `audience` value sent on the ID-JAG token exchange, identifying the Resource Authorization Server (typically its issuer)."
|
|
304
|
+
},
|
|
305
|
+
"resource": {
|
|
306
|
+
"type": "string",
|
|
307
|
+
"description": "Optional `resource` indicator sent on the token exchange, identifying the upstream MCP resource. Defaults to the upstream MCP server URL from the route handler's rewritePattern."
|
|
308
|
+
},
|
|
309
|
+
"clientAuth": {
|
|
310
|
+
"description": "Client authentication used at the token endpoint.",
|
|
311
|
+
"oneOf": [
|
|
312
|
+
{
|
|
313
|
+
"type": "object",
|
|
314
|
+
"additionalProperties": false,
|
|
315
|
+
"required": ["method", "clientId", "clientSecret"],
|
|
316
|
+
"properties": {
|
|
317
|
+
"method": {
|
|
318
|
+
"type": "string",
|
|
319
|
+
"const": "client_secret_post"
|
|
320
|
+
},
|
|
321
|
+
"clientId": {
|
|
322
|
+
"type": "string"
|
|
323
|
+
},
|
|
324
|
+
"clientSecret": {
|
|
325
|
+
"type": "string",
|
|
326
|
+
"examples": ["$env(IDP_CLIENT_SECRET)"],
|
|
327
|
+
"description": "OAuth client secret. Use `$env(VAR_NAME)` to source from an environment variable."
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"type": "object",
|
|
333
|
+
"additionalProperties": false,
|
|
334
|
+
"required": ["method", "clientId", "clientSecret"],
|
|
335
|
+
"properties": {
|
|
336
|
+
"method": {
|
|
337
|
+
"type": "string",
|
|
338
|
+
"const": "client_secret_basic"
|
|
339
|
+
},
|
|
340
|
+
"clientId": {
|
|
341
|
+
"type": "string"
|
|
342
|
+
},
|
|
343
|
+
"clientSecret": {
|
|
344
|
+
"type": "string",
|
|
345
|
+
"examples": ["$env(IDP_CLIENT_SECRET)"],
|
|
346
|
+
"description": "OAuth client secret. Use `$env(VAR_NAME)` to source from an environment variable."
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"type": "object",
|
|
352
|
+
"additionalProperties": false,
|
|
353
|
+
"required": ["method", "clientId", "privateKeyPem"],
|
|
354
|
+
"properties": {
|
|
355
|
+
"method": {
|
|
356
|
+
"type": "string",
|
|
357
|
+
"const": "private_key_jwt"
|
|
358
|
+
},
|
|
359
|
+
"clientId": {
|
|
360
|
+
"type": "string"
|
|
361
|
+
},
|
|
362
|
+
"privateKeyPem": {
|
|
363
|
+
"type": "string",
|
|
364
|
+
"examples": ["$env(IDP_PRIVATE_KEY_PEM)"],
|
|
365
|
+
"description": "PEM-encoded private key used to sign the client assertion. Use `$env(VAR_NAME)` to source from an environment variable."
|
|
366
|
+
},
|
|
367
|
+
"algorithm": {
|
|
368
|
+
"type": "string",
|
|
369
|
+
"enum": [
|
|
370
|
+
"RS256",
|
|
371
|
+
"RS384",
|
|
372
|
+
"RS512",
|
|
373
|
+
"ES256",
|
|
374
|
+
"ES384",
|
|
375
|
+
"ES512"
|
|
376
|
+
],
|
|
377
|
+
"default": "RS256",
|
|
378
|
+
"description": "JWS algorithm used to sign the client assertion."
|
|
379
|
+
},
|
|
380
|
+
"keyId": {
|
|
381
|
+
"type": "string",
|
|
382
|
+
"description": "Optional `kid` header set on the client assertion, for providers that select the verification key by key id."
|
|
383
|
+
},
|
|
384
|
+
"audience": {
|
|
385
|
+
"type": "string",
|
|
386
|
+
"format": "uri",
|
|
387
|
+
"description": "Optional override for the client assertion `aud` claim. Defaults to the token endpoint URL."
|
|
388
|
+
},
|
|
389
|
+
"expiresInSeconds": {
|
|
390
|
+
"type": "integer",
|
|
391
|
+
"default": 300,
|
|
392
|
+
"minimum": 1,
|
|
393
|
+
"maximum": 3600,
|
|
394
|
+
"description": "Client assertion lifetime in seconds."
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
]
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
129
403
|
}
|
|
130
404
|
}
|
|
131
405
|
}
|
|
@@ -137,6 +411,12 @@
|
|
|
137
411
|
"options": {
|
|
138
412
|
"displayName": "Linear",
|
|
139
413
|
"id": "linear",
|
|
414
|
+
"idJag": {
|
|
415
|
+
"idp": {},
|
|
416
|
+
"resourceAs": {},
|
|
417
|
+
"scopeDelimiter": " ",
|
|
418
|
+
"scopes": []
|
|
419
|
+
},
|
|
140
420
|
"scopes": [],
|
|
141
421
|
"summary": "Native Linear remote MCP server."
|
|
142
422
|
}
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"gateway": {
|
|
54
54
|
"type": "object",
|
|
55
|
+
"x-advanced": true,
|
|
55
56
|
"description": "Gateway-side OAuth token settings. The gateway issuer and advertised URLs are derived from the incoming request origin.",
|
|
56
57
|
"additionalProperties": false,
|
|
57
58
|
"properties": {
|
|
@@ -74,8 +75,88 @@
|
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
},
|
|
78
|
+
"idJag": {
|
|
79
|
+
"x-advanced": true,
|
|
80
|
+
"description": "Optional Identity Assertion JWT Authorization Grant (ID-JAG / XAA) support for the gateway token endpoint.",
|
|
81
|
+
"oneOf": [
|
|
82
|
+
{
|
|
83
|
+
"type": "object",
|
|
84
|
+
"additionalProperties": false,
|
|
85
|
+
"required": ["enabled"],
|
|
86
|
+
"properties": {
|
|
87
|
+
"enabled": {
|
|
88
|
+
"const": false,
|
|
89
|
+
"description": "Disable ID-JAG support."
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"type": "object",
|
|
95
|
+
"additionalProperties": false,
|
|
96
|
+
"required": ["enabled"],
|
|
97
|
+
"properties": {
|
|
98
|
+
"enabled": {
|
|
99
|
+
"const": true,
|
|
100
|
+
"description": "Enable ID-JAG support."
|
|
101
|
+
},
|
|
102
|
+
"trustedIssuers": {
|
|
103
|
+
"type": "array",
|
|
104
|
+
"minItems": 1,
|
|
105
|
+
"description": "Trusted ID-JAG issuers. These values are never published in OAuth metadata. Omit to trust this policy's browser-login IdP.",
|
|
106
|
+
"items": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"additionalProperties": false,
|
|
109
|
+
"dependentRequired": {
|
|
110
|
+
"issuer": ["jwksUrl"],
|
|
111
|
+
"jwksUrl": ["issuer"]
|
|
112
|
+
},
|
|
113
|
+
"properties": {
|
|
114
|
+
"issuer": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"format": "uri",
|
|
117
|
+
"description": "Exact issuer URL expected in the ID-JAG iss claim. Provide together with jwksUrl, or omit both to default to this policy's browser-login IdP."
|
|
118
|
+
},
|
|
119
|
+
"jwksUrl": {
|
|
120
|
+
"type": "string",
|
|
121
|
+
"format": "uri",
|
|
122
|
+
"description": "JWKS URL used to verify ID-JAG signatures from this issuer. Provide together with issuer, or omit both to default to this policy's browser-login IdP."
|
|
123
|
+
},
|
|
124
|
+
"expectedClientIds": {
|
|
125
|
+
"type": "array",
|
|
126
|
+
"items": {
|
|
127
|
+
"type": "string",
|
|
128
|
+
"minLength": 1
|
|
129
|
+
},
|
|
130
|
+
"description": "Optional allow-list of client IDs accepted from this issuer. The ID-JAG client_id must still match the authenticated token-endpoint client."
|
|
131
|
+
},
|
|
132
|
+
"subjectMapping": {
|
|
133
|
+
"type": "string",
|
|
134
|
+
"enum": [
|
|
135
|
+
"iss_prefix",
|
|
136
|
+
"iss_tenant_prefix",
|
|
137
|
+
"sub_id_only"
|
|
138
|
+
],
|
|
139
|
+
"default": "iss_prefix",
|
|
140
|
+
"description": "How the ID-JAG subject is mapped into the gateway subject ID."
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"authorizationDetailsTypesAllowed": {
|
|
146
|
+
"type": "array",
|
|
147
|
+
"items": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"minLength": 1
|
|
150
|
+
},
|
|
151
|
+
"description": "Optional allow-list of RFC 9396 authorization_details type values accepted from ID-JAGs."
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
},
|
|
77
157
|
"browserLoginOverrides": {
|
|
78
158
|
"type": "object",
|
|
159
|
+
"x-advanced": true,
|
|
79
160
|
"description": "Optional overrides for the derived browser-login settings.",
|
|
80
161
|
"additionalProperties": false,
|
|
81
162
|
"properties": {
|
|
@@ -35,37 +35,47 @@
|
|
|
35
35
|
"additionalProperties": false,
|
|
36
36
|
"required": [],
|
|
37
37
|
"properties": {
|
|
38
|
+
"meters": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"examples": [
|
|
41
|
+
{
|
|
42
|
+
"api_requests": 1
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"additionalProperties": {
|
|
46
|
+
"type": "number"
|
|
47
|
+
},
|
|
48
|
+
"description": "The meters to be used by the policy against the subscription quota."
|
|
49
|
+
},
|
|
50
|
+
"requiredEntitlements": {
|
|
51
|
+
"type": "array",
|
|
52
|
+
"items": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"minLength": 1
|
|
55
|
+
},
|
|
56
|
+
"description": "A list of entitlement keys that the subscription must have access to (hasAccess=true) for the request to be allowed. If any required entitlement is missing or does not have access, the request will be rejected with a 403 Forbidden.",
|
|
57
|
+
"examples": [["custom_domains"]]
|
|
58
|
+
},
|
|
38
59
|
"authHeader": {
|
|
39
60
|
"type": "string",
|
|
40
61
|
"default": "Authorization",
|
|
41
62
|
"x-show-example": false,
|
|
63
|
+
"x-advanced": true,
|
|
42
64
|
"description": "The name of the header with the key."
|
|
43
65
|
},
|
|
44
66
|
"authScheme": {
|
|
45
67
|
"type": "string",
|
|
46
68
|
"default": "Bearer",
|
|
47
69
|
"x-show-example": false,
|
|
70
|
+
"x-advanced": true,
|
|
48
71
|
"description": "The scheme used on the header."
|
|
49
72
|
},
|
|
50
73
|
"cacheTtlSeconds": {
|
|
51
74
|
"type": "number",
|
|
52
75
|
"default": 60,
|
|
76
|
+
"x-advanced": true,
|
|
53
77
|
"description": "The time to cache authentication results for a particular key. Higher values will decrease latency. Cached results will be valid until the cache expires even in the event the key is deleted, etc."
|
|
54
78
|
},
|
|
55
|
-
"meters": {
|
|
56
|
-
"type": "object",
|
|
57
|
-
"examples": [
|
|
58
|
-
{
|
|
59
|
-
"api_requests": 1
|
|
60
|
-
}
|
|
61
|
-
],
|
|
62
|
-
"patternProperties": {
|
|
63
|
-
"^.*$": {
|
|
64
|
-
"type": "number"
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
"description": "The meters to be used by the policy against the subscription quota."
|
|
68
|
-
},
|
|
69
79
|
"meterOnStatusCodes": {
|
|
70
80
|
"oneOf": [
|
|
71
81
|
{
|
|
@@ -79,18 +89,10 @@
|
|
|
79
89
|
}
|
|
80
90
|
],
|
|
81
91
|
"x-show-example": false,
|
|
92
|
+
"x-advanced": true,
|
|
82
93
|
"description": "A list of successful status codes and ranges \"200-299, 304\" that should trigger a metering call.",
|
|
83
94
|
"default": "200-299",
|
|
84
95
|
"examples": ["200-399"]
|
|
85
|
-
},
|
|
86
|
-
"requiredEntitlements": {
|
|
87
|
-
"type": "array",
|
|
88
|
-
"items": {
|
|
89
|
-
"type": "string",
|
|
90
|
-
"minLength": 1
|
|
91
|
-
},
|
|
92
|
-
"description": "A list of entitlement keys that the subscription must have access to (hasAccess=true) for the request to be allowed. If any required entitlement is missing or does not have access, the request will be rejected with a 403 Forbidden.",
|
|
93
|
-
"examples": [["custom_domains"]]
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
98
|
}
|
|
@@ -35,15 +35,16 @@
|
|
|
35
35
|
"additionalProperties": false,
|
|
36
36
|
"required": [],
|
|
37
37
|
"properties": {
|
|
38
|
-
"allowUnauthenticatedRequests": {
|
|
39
|
-
"type": "boolean",
|
|
40
|
-
"default": false,
|
|
41
|
-
"description": "Allows requests to continue even when mTLS verification fails, no client certificate is presented, or the certificate metadata cannot be parsed. Defaults to false."
|
|
42
|
-
},
|
|
43
38
|
"certIssuerDN": {
|
|
44
39
|
"type": "string",
|
|
45
40
|
"description": "Fully qualified issuer distinguished name to require on the client certificate. The policy rejects certificates whose parsed issuer DN does not match this string exactly. Required unless `allowUnauthenticatedRequests` is `true`. The expected format matches the parsed metadata issuer, e.g. \"CN=example-ca, O=Example, C=US\".",
|
|
46
41
|
"examples": ["CN=example-ca, O=Example, C=US"]
|
|
42
|
+
},
|
|
43
|
+
"allowUnauthenticatedRequests": {
|
|
44
|
+
"type": "boolean",
|
|
45
|
+
"default": false,
|
|
46
|
+
"x-advanced": true,
|
|
47
|
+
"description": "Allows requests to continue even when mTLS verification fails, no client certificate is presented, or the certificate metadata cannot be parsed. Defaults to false."
|
|
47
48
|
}
|
|
48
49
|
},
|
|
49
50
|
"anyOf": [
|
|
@@ -56,12 +56,6 @@
|
|
|
56
56
|
"description": "The ID of the authorization model.",
|
|
57
57
|
"examples": ["$env(FGA_MODEL_ID)"]
|
|
58
58
|
},
|
|
59
|
-
"allowUnauthorizedRequests": {
|
|
60
|
-
"type": "boolean",
|
|
61
|
-
"default": false,
|
|
62
|
-
"x-show-example": false,
|
|
63
|
-
"description": "Indicates whether the request should continue if authorization fails. Default is `false` which means unauthorized users will automatically receive a 403 response."
|
|
64
|
-
},
|
|
65
59
|
"credentials": {
|
|
66
60
|
"type": "object",
|
|
67
61
|
"required": ["clientId", "clientSecret"],
|
|
@@ -81,6 +75,13 @@
|
|
|
81
75
|
"clientSecret": "$env(FGA_CLIENT_SECRET)"
|
|
82
76
|
}
|
|
83
77
|
]
|
|
78
|
+
},
|
|
79
|
+
"allowUnauthorizedRequests": {
|
|
80
|
+
"type": "boolean",
|
|
81
|
+
"default": false,
|
|
82
|
+
"x-show-example": false,
|
|
83
|
+
"x-advanced": true,
|
|
84
|
+
"description": "Indicates whether the request should continue if authorization fails. Default is `false` which means unauthorized users will automatically receive a 403 response."
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
87
|
}
|
|
@@ -35,11 +35,6 @@
|
|
|
35
35
|
"additionalProperties": false,
|
|
36
36
|
"required": ["issuerUrl"],
|
|
37
37
|
"properties": {
|
|
38
|
-
"allowUnauthenticatedRequests": {
|
|
39
|
-
"type": "boolean",
|
|
40
|
-
"default": false,
|
|
41
|
-
"description": "Allow unauthenticated requests to proceed. This is use useful if you want to use multiple authentication policies or if you want to allow both authenticated and non-authenticated traffic."
|
|
42
|
-
},
|
|
43
38
|
"issuerUrl": {
|
|
44
39
|
"type": "string",
|
|
45
40
|
"examples": ["https://dev-12345.okta.com/oauth2/abc"],
|
|
@@ -50,9 +45,16 @@
|
|
|
50
45
|
"examples": ["api://my-api"],
|
|
51
46
|
"description": "The Okta audience of your API, for example `api://my-api`."
|
|
52
47
|
},
|
|
48
|
+
"allowUnauthenticatedRequests": {
|
|
49
|
+
"type": "boolean",
|
|
50
|
+
"default": false,
|
|
51
|
+
"x-advanced": true,
|
|
52
|
+
"description": "Allow unauthenticated requests to proceed. This is use useful if you want to use multiple authentication policies or if you want to allow both authenticated and non-authenticated traffic."
|
|
53
|
+
},
|
|
53
54
|
"oAuthResourceMetadataEnabled": {
|
|
54
55
|
"type": "boolean",
|
|
55
56
|
"default": false,
|
|
57
|
+
"x-advanced": true,
|
|
56
58
|
"description": "Flag that determines whether OAuth protected resource metadata is enabled."
|
|
57
59
|
}
|
|
58
60
|
}
|