zuplo 6.67.32 → 6.68.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/README.md +9 -0
- package/docs/_index.md +44 -0
- package/docs/ai-gateway/apps.mdx +28 -0
- package/docs/ai-gateway/custom-providers.mdx +54 -0
- package/docs/ai-gateway/getting-started.mdx +224 -0
- package/docs/ai-gateway/guardrails.mdx +65 -0
- package/docs/ai-gateway/integrations/ai-sdk.mdx +109 -0
- package/docs/ai-gateway/integrations/claude-code.mdx +49 -0
- package/docs/ai-gateway/integrations/codex.mdx +78 -0
- package/docs/ai-gateway/integrations/goose.mdx +104 -0
- package/docs/ai-gateway/integrations/langchain.mdx +66 -0
- package/docs/ai-gateway/integrations/openai.mdx +99 -0
- package/docs/ai-gateway/introduction.mdx +85 -0
- package/docs/ai-gateway/managing-apps.mdx +46 -0
- package/docs/ai-gateway/managing-providers.mdx +66 -0
- package/docs/ai-gateway/managing-teams.mdx +63 -0
- package/docs/ai-gateway/policies/akamai-ai-firewall.mdx +125 -0
- package/docs/ai-gateway/policies/comet-opik-tracing.mdx +139 -0
- package/docs/ai-gateway/policies/galileo-tracing.mdx +147 -0
- package/docs/ai-gateway/providers.mdx +32 -0
- package/docs/ai-gateway/teams.mdx +38 -0
- package/docs/ai-gateway/universal-api.mdx +43 -0
- package/docs/ai-gateway/usage-limits.mdx +89 -0
- package/docs/api-management/introduction.md +127 -0
- package/docs/articles/accounts/audit-logs.mdx +227 -0
- package/docs/articles/accounts/billing.mdx +25 -0
- package/docs/articles/accounts/default-api-key.mdx +30 -0
- package/docs/articles/accounts/delete-account.mdx +36 -0
- package/docs/articles/accounts/enterprise-sso.mdx +116 -0
- package/docs/articles/accounts/managing-account-members.mdx +45 -0
- package/docs/articles/accounts/managing-project-members.mdx +37 -0
- package/docs/articles/accounts/members-and-roles.mdx +21 -0
- package/docs/articles/accounts/roles-and-permissions.mdx +115 -0
- package/docs/articles/accounts/zuplo-api-keys.mdx +94 -0
- package/docs/articles/add-api-to-backstage.mdx +216 -0
- package/docs/articles/advanced-path-matching.mdx +139 -0
- package/docs/articles/api-key-administration.mdx +47 -0
- package/docs/articles/api-key-api.mdx +220 -0
- package/docs/articles/api-key-authentication.mdx +195 -0
- package/docs/articles/api-key-buckets.mdx +61 -0
- package/docs/articles/api-key-end-users.mdx +52 -0
- package/docs/articles/api-key-leak-detection.mdx +75 -0
- package/docs/articles/api-key-management.mdx +100 -0
- package/docs/articles/api-key-react-component.mdx +90 -0
- package/docs/articles/api-key-service-limits.mdx +14 -0
- package/docs/articles/archiving-requests-to-storage.mdx +119 -0
- package/docs/articles/branch-based-deployments.mdx +184 -0
- package/docs/articles/bypass-policy-for-testing.mdx +117 -0
- package/docs/articles/check-ip-address.mdx +17 -0
- package/docs/articles/ci-cd-azure/basic-deployment.mdx +49 -0
- package/docs/articles/ci-cd-azure/deploy-and-test.mdx +47 -0
- package/docs/articles/ci-cd-azure/local-testing.mdx +59 -0
- package/docs/articles/ci-cd-azure/multi-stage-deployment.mdx +88 -0
- package/docs/articles/ci-cd-azure/pr-preview-environments.mdx +50 -0
- package/docs/articles/ci-cd-azure/tag-based-releases.mdx +37 -0
- package/docs/articles/ci-cd-bitbucket/basic-deployment.mdx +27 -0
- package/docs/articles/ci-cd-bitbucket/deploy-and-test.mdx +41 -0
- package/docs/articles/ci-cd-bitbucket/local-testing.mdx +34 -0
- package/docs/articles/ci-cd-bitbucket/multi-stage-deployment.mdx +52 -0
- package/docs/articles/ci-cd-bitbucket/pr-preview-environments.mdx +46 -0
- package/docs/articles/ci-cd-bitbucket/tag-based-releases.mdx +27 -0
- package/docs/articles/ci-cd-circleci/basic-deployment.mdx +34 -0
- package/docs/articles/ci-cd-circleci/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-circleci/local-testing.mdx +50 -0
- package/docs/articles/ci-cd-circleci/multi-stage-deployment.mdx +82 -0
- package/docs/articles/ci-cd-circleci/pr-preview-environments.mdx +47 -0
- package/docs/articles/ci-cd-circleci/tag-based-releases.mdx +38 -0
- package/docs/articles/ci-cd-github/basic-deployment.mdx +48 -0
- package/docs/articles/ci-cd-github/cleanup-on-branch-delete.mdx +123 -0
- package/docs/articles/ci-cd-github/deploy-and-test.mdx +82 -0
- package/docs/articles/ci-cd-github/local-testing.mdx +102 -0
- package/docs/articles/ci-cd-github/multi-stage-deployment.mdx +136 -0
- package/docs/articles/ci-cd-github/pr-preview-environments.mdx +106 -0
- package/docs/articles/ci-cd-github/tag-based-releases.mdx +99 -0
- package/docs/articles/ci-cd-gitlab/basic-deployment.mdx +28 -0
- package/docs/articles/ci-cd-gitlab/deploy-and-test.mdx +44 -0
- package/docs/articles/ci-cd-gitlab/local-testing.mdx +39 -0
- package/docs/articles/ci-cd-gitlab/mr-preview-environments.mdx +52 -0
- package/docs/articles/ci-cd-gitlab/multi-stage-deployment.mdx +64 -0
- package/docs/articles/ci-cd-gitlab/tag-based-releases.mdx +28 -0
- package/docs/articles/composite-policy-reference.mdx +284 -0
- package/docs/articles/configuring-auth0-for-mcp-auth.mdx +186 -0
- package/docs/articles/configuring-okta-for-mcp-auth.mdx +208 -0
- package/docs/articles/convert-urls-to-openapi.mdx +62 -0
- package/docs/articles/cors.mdx +447 -0
- package/docs/articles/custom-audit-log-policy.mdx +95 -0
- package/docs/articles/custom-ci-cd-azure.mdx +81 -0
- package/docs/articles/custom-ci-cd-bitbucket.mdx +80 -0
- package/docs/articles/custom-ci-cd-circleci.mdx +78 -0
- package/docs/articles/custom-ci-cd-github.mdx +99 -0
- package/docs/articles/custom-ci-cd-gitlab.mdx +79 -0
- package/docs/articles/custom-ci-cd.mdx +82 -0
- package/docs/articles/custom-code-patterns.md +418 -0
- package/docs/articles/custom-domains.mdx +258 -0
- package/docs/articles/custom-logging-example.mdx +139 -0
- package/docs/articles/ddos-protection.mdx +138 -0
- package/docs/articles/development-options.mdx +49 -0
- package/docs/articles/environment-variables.mdx +134 -0
- package/docs/articles/environments.mdx +143 -0
- package/docs/articles/fastly-zuplo-host-setup.mdx +41 -0
- package/docs/articles/github-deployment-testing.mdx +101 -0
- package/docs/articles/gke-with-upstream-auth-policy.mdx +192 -0
- package/docs/articles/graphql-security.mdx +180 -0
- package/docs/articles/handling-form-data.mdx +61 -0
- package/docs/articles/health-checks.mdx +109 -0
- package/docs/articles/hosting-options.mdx +70 -0
- package/docs/articles/lazy-load-configuration-into-cache.mdx +92 -0
- package/docs/articles/limits.mdx +98 -0
- package/docs/articles/local-development-debugging.mdx +44 -0
- package/docs/articles/local-development-env-variables.mdx +23 -0
- package/docs/articles/local-development-installing-packages.mdx +23 -0
- package/docs/articles/local-development-routes-designer.mdx +27 -0
- package/docs/articles/local-development-services.mdx +40 -0
- package/docs/articles/local-development-troubleshooting.mdx +56 -0
- package/docs/articles/local-development.mdx +81 -0
- package/docs/articles/log-plugin-aws-cloudwatch.mdx +83 -0
- package/docs/articles/log-plugin-datadog.mdx +84 -0
- package/docs/articles/log-plugin-dynatrace.mdx +75 -0
- package/docs/articles/log-plugin-gcp.mdx +75 -0
- package/docs/articles/log-plugin-loki.mdx +136 -0
- package/docs/articles/log-plugin-new-relic.mdx +84 -0
- package/docs/articles/log-plugin-splunk.mdx +104 -0
- package/docs/articles/log-plugin-sumo.mdx +73 -0
- package/docs/articles/log-plugin-vmware-log-insight.mdx +154 -0
- package/docs/articles/log-request-response-data.mdx +398 -0
- package/docs/articles/logging.mdx +115 -0
- package/docs/articles/manual-mcp-oauth-testing.mdx +193 -0
- package/docs/articles/mcp-quickstart.mdx +135 -0
- package/docs/articles/metrics-plugins.mdx +371 -0
- package/docs/articles/migrate-from-apigee.md +408 -0
- package/docs/articles/migrate-from-aws-api-gateway.md +248 -0
- package/docs/articles/migrate-from-azure-apim.md +292 -0
- package/docs/articles/migrate-from-kong.md +300 -0
- package/docs/articles/migration-overview.md +81 -0
- package/docs/articles/monetization/api-access.mdx +69 -0
- package/docs/articles/monetization/billing-models.md +520 -0
- package/docs/articles/monetization/developer-portal.md +167 -0
- package/docs/articles/monetization/features.mdx +98 -0
- package/docs/articles/monetization/index.mdx +113 -0
- package/docs/articles/monetization/meters.mdx +135 -0
- package/docs/articles/monetization/monetization-policy.md +314 -0
- package/docs/articles/monetization/plan-examples.mdx +366 -0
- package/docs/articles/monetization/plans.mdx +266 -0
- package/docs/articles/monetization/pricing-models.mdx +225 -0
- package/docs/articles/monetization/private-plans.md +154 -0
- package/docs/articles/monetization/quickstart.md +355 -0
- package/docs/articles/monetization/rate-cards.mdx +171 -0
- package/docs/articles/monetization/stripe-integration.md +195 -0
- package/docs/articles/monetization/subscription-lifecycle.md +298 -0
- package/docs/articles/monetization/tax-collection.md +166 -0
- package/docs/articles/monetization/troubleshooting.md +272 -0
- package/docs/articles/monetization-custom.mdx +71 -0
- package/docs/articles/monetization-integrations.mdx +104 -0
- package/docs/articles/monitoring-your-gateway.mdx +53 -0
- package/docs/articles/monorepo-deployment.mdx +350 -0
- package/docs/articles/multiple-auth-policies.mdx +81 -0
- package/docs/articles/non-standard-ports.mdx +30 -0
- package/docs/articles/oauth-authentication.mdx +54 -0
- package/docs/articles/openapi-server-urls.mdx +60 -0
- package/docs/articles/openapi.mdx +130 -0
- package/docs/articles/opentelemetry.mdx +250 -0
- package/docs/articles/per-user-rate-limits-using-db.mdx +112 -0
- package/docs/articles/performance-testing.mdx +304 -0
- package/docs/articles/plugin-akamai-api-security.mdx +76 -0
- package/docs/articles/plugin-azure-blob.mdx +73 -0
- package/docs/articles/plugin-azure-event-hubs.mdx +64 -0
- package/docs/articles/plugin-hydrolix-traffic-peak.mdx +147 -0
- package/docs/articles/policies.mdx +33 -0
- package/docs/articles/rename-or-move-project.mdx +39 -0
- package/docs/articles/rick-and-morty-api-developer-portal-example.mdx +23 -0
- package/docs/articles/routing.mdx +193 -0
- package/docs/articles/s3-signed-url-uploads.mdx +521 -0
- package/docs/articles/secure-tunnel.mdx +84 -0
- package/docs/articles/securing-backend-mtls.mdx +268 -0
- package/docs/articles/securing-your-backend.mdx +148 -0
- package/docs/articles/security.mdx +105 -0
- package/docs/articles/sharing-code-across-projects.mdx +412 -0
- package/docs/articles/source-control-setup-azure.mdx +13 -0
- package/docs/articles/source-control-setup-bitbucket.mdx +43 -0
- package/docs/articles/source-control-setup-github.mdx +172 -0
- package/docs/articles/source-control-setup-gitlab.mdx +12 -0
- package/docs/articles/source-control.mdx +80 -0
- package/docs/articles/step-1-setup-basic-gateway-local.mdx +136 -0
- package/docs/articles/step-1-setup-basic-gateway.mdx +118 -0
- package/docs/articles/step-2-add-rate-limiting-local.mdx +126 -0
- package/docs/articles/step-2-add-rate-limiting.mdx +82 -0
- package/docs/articles/step-3-add-api-key-auth-local.mdx +199 -0
- package/docs/articles/step-3-add-api-key-auth.mdx +166 -0
- package/docs/articles/step-4-deploying-to-the-edge.mdx +220 -0
- package/docs/articles/step-5-dynamic-rate-limiting.mdx +167 -0
- package/docs/articles/support.mdx +144 -0
- package/docs/articles/terraform.mdx +114 -0
- package/docs/articles/testing-graphql.mdx +34 -0
- package/docs/articles/testing.mdx +522 -0
- package/docs/articles/troubleshooting-slow-responses.mdx +301 -0
- package/docs/articles/troubleshooting.md +302 -0
- package/docs/articles/tsconfig.mdx +105 -0
- package/docs/articles/tunnel-setup.mdx +195 -0
- package/docs/articles/tunnel-troubleshooting.mdx +50 -0
- package/docs/articles/update-zup-in-github-action.mdx +110 -0
- package/docs/articles/use-openapi-extension-data.mdx +79 -0
- package/docs/articles/users/multifactor-authentication.mdx +64 -0
- package/docs/articles/users/profile.mdx +13 -0
- package/docs/articles/versioning-on-zuplo.mdx +89 -0
- package/docs/articles/waf-ddos-akamai.md +133 -0
- package/docs/articles/waf-ddos-aws-waf-shield.mdx +85 -0
- package/docs/articles/waf-ddos-fastly.mdx +251 -0
- package/docs/articles/waf-ddos.mdx +140 -0
- package/docs/articles/zuplo-waf.mdx +156 -0
- package/docs/ask.mdx +3 -0
- package/docs/cli/authentication.mdx +56 -0
- package/docs/cli/connectivity.mdx +38 -0
- package/docs/cli/create-zuplo-api.mdx +80 -0
- package/docs/cli/delete.mdx +79 -0
- package/docs/cli/deploy.mdx +156 -0
- package/docs/cli/deploy.partial.mdx +46 -0
- package/docs/cli/dev.mdx +115 -0
- package/docs/cli/docs.mdx +66 -0
- package/docs/cli/editor.mdx +50 -0
- package/docs/cli/global-options.mdx +19 -0
- package/docs/cli/init.mdx +74 -0
- package/docs/cli/link.mdx +74 -0
- package/docs/cli/list.mdx +55 -0
- package/docs/cli/mtls-certificate-create.mdx +94 -0
- package/docs/cli/mtls-certificate-delete.mdx +55 -0
- package/docs/cli/mtls-certificate-describe.mdx +55 -0
- package/docs/cli/mtls-certificate-disable.mdx +55 -0
- package/docs/cli/mtls-certificate-list.mdx +47 -0
- package/docs/cli/mtls-certificate-update.mdx +72 -0
- package/docs/cli/openapi-convert.mdx +111 -0
- package/docs/cli/openapi-merge.mdx +138 -0
- package/docs/cli/openapi-merge.partial.mdx +29 -0
- package/docs/cli/openapi-overlay.mdx +123 -0
- package/docs/cli/overview.mdx +78 -0
- package/docs/cli/project-create.mdx +43 -0
- package/docs/cli/source-migrate.mdx +18 -0
- package/docs/cli/source-upgrade.mdx +41 -0
- package/docs/cli/test.mdx +70 -0
- package/docs/cli/test.partial.mdx +7 -0
- package/docs/cli/tunnel-create.mdx +53 -0
- package/docs/cli/tunnel-create.partial.mdx +9 -0
- package/docs/cli/tunnel-delete.mdx +35 -0
- package/docs/cli/tunnel-delete.partial.mdx +9 -0
- package/docs/cli/tunnel-describe.mdx +45 -0
- package/docs/cli/tunnel-describe.partial.mdx +5 -0
- package/docs/cli/tunnel-list.mdx +35 -0
- package/docs/cli/tunnel-list.partial.mdx +9 -0
- package/docs/cli/tunnel-rate-token.partial.mdx +9 -0
- package/docs/cli/tunnel-rotate-token.mdx +39 -0
- package/docs/cli/tunnel-services-describe.mdx +45 -0
- package/docs/cli/tunnel-services-describe.partial.mdx +9 -0
- package/docs/cli/tunnel-services-update.mdx +48 -0
- package/docs/cli/variable-create.mdx +91 -0
- package/docs/cli/variable-create.partial.mdx +5 -0
- package/docs/cli/variable-update.mdx +75 -0
- package/docs/cli/variable-update.partial.mdx +5 -0
- package/docs/concepts/api-keys.md +146 -0
- package/docs/concepts/authentication.mdx +109 -0
- package/docs/concepts/how-zuplo-works.mdx +120 -0
- package/docs/concepts/project-structure.mdx +174 -0
- package/docs/concepts/rate-limiting.md +246 -0
- package/docs/concepts/request-lifecycle.mdx +56 -0
- package/docs/concepts/source-control-and-deployment.mdx +229 -0
- package/docs/conferences/conference-prize-terms.mdx +80 -0
- package/docs/dedicated/akamai/ai-powered-applications.mdx +223 -0
- package/docs/dedicated/akamai/architecture.mdx +280 -0
- package/docs/dedicated/akamai/caching.mdx +212 -0
- package/docs/dedicated/akamai/cdn.mdx +156 -0
- package/docs/dedicated/architecture.mdx +208 -0
- package/docs/dedicated/custom-domains.mdx +31 -0
- package/docs/dedicated/federated-gateways.mdx +80 -0
- package/docs/dedicated/networking.mdx +69 -0
- package/docs/dedicated/overview.mdx +80 -0
- package/docs/dedicated/source-control.mdx +63 -0
- package/docs/dev-portal/dev-portal-create-consumer-on-auth.mdx +134 -0
- package/docs/dev-portal/introduction.mdx +65 -0
- package/docs/dev-portal/local-development.mdx +72 -0
- package/docs/dev-portal/migration.mdx +526 -0
- package/docs/dev-portal/node-modules.mdx +45 -0
- package/docs/dev-portal/updating.mdx +28 -0
- package/docs/dev-portal/zudoku/components/alert.mdx +130 -0
- package/docs/dev-portal/zudoku/components/badge.mdx +70 -0
- package/docs/dev-portal/zudoku/components/button.mdx +132 -0
- package/docs/dev-portal/zudoku/components/callout.mdx +112 -0
- package/docs/dev-portal/zudoku/components/card.mdx +104 -0
- package/docs/dev-portal/zudoku/components/checkbox.mdx +72 -0
- package/docs/dev-portal/zudoku/components/client-only.mdx +79 -0
- package/docs/dev-portal/zudoku/components/code-tabs.mdx +179 -0
- package/docs/dev-portal/zudoku/components/dialog.mdx +167 -0
- package/docs/dev-portal/zudoku/components/head.mdx +199 -0
- package/docs/dev-portal/zudoku/components/icons.mdx +27 -0
- package/docs/dev-portal/zudoku/components/input.mdx +96 -0
- package/docs/dev-portal/zudoku/components/label.mdx +86 -0
- package/docs/dev-portal/zudoku/components/link.mdx +242 -0
- package/docs/dev-portal/zudoku/components/markdown.mdx +151 -0
- package/docs/dev-portal/zudoku/components/mermaid.mdx +81 -0
- package/docs/dev-portal/zudoku/components/playground.mdx +87 -0
- package/docs/dev-portal/zudoku/components/secret.mdx +78 -0
- package/docs/dev-portal/zudoku/components/select.mdx +176 -0
- package/docs/dev-portal/zudoku/components/shadcn.mdx +73 -0
- package/docs/dev-portal/zudoku/components/slider.mdx +108 -0
- package/docs/dev-portal/zudoku/components/slot.mdx +119 -0
- package/docs/dev-portal/zudoku/components/stepper.mdx +138 -0
- package/docs/dev-portal/zudoku/components/switch.mdx +96 -0
- package/docs/dev-portal/zudoku/components/syntax-highlight.mdx +602 -0
- package/docs/dev-portal/zudoku/components/textarea.mdx +78 -0
- package/docs/dev-portal/zudoku/components/tooltip.mdx +195 -0
- package/docs/dev-portal/zudoku/components/typography.mdx +61 -0
- package/docs/dev-portal/zudoku/configuration/ai-assistants.md +64 -0
- package/docs/dev-portal/zudoku/configuration/api-catalog.md +108 -0
- package/docs/dev-portal/zudoku/configuration/api-reference.md +397 -0
- package/docs/dev-portal/zudoku/configuration/authentication-auth0.md +173 -0
- package/docs/dev-portal/zudoku/configuration/authentication-azure-ad.md +238 -0
- package/docs/dev-portal/zudoku/configuration/authentication-clerk.md +110 -0
- package/docs/dev-portal/zudoku/configuration/authentication-firebase.md +61 -0
- package/docs/dev-portal/zudoku/configuration/authentication-pingfederate.md +136 -0
- package/docs/dev-portal/zudoku/configuration/authentication-supabase.md +225 -0
- package/docs/dev-portal/zudoku/configuration/authentication.md +199 -0
- package/docs/dev-portal/zudoku/configuration/build-configuration.mdx +147 -0
- package/docs/dev-portal/zudoku/configuration/docs.md +282 -0
- package/docs/dev-portal/zudoku/configuration/footer.mdx +214 -0
- package/docs/dev-portal/zudoku/configuration/llms.md +89 -0
- package/docs/dev-portal/zudoku/configuration/navigation.mdx +408 -0
- package/docs/dev-portal/zudoku/configuration/overview.md +380 -0
- package/docs/dev-portal/zudoku/configuration/protected-routes.md +149 -0
- package/docs/dev-portal/zudoku/configuration/search.md +169 -0
- package/docs/dev-portal/zudoku/configuration/sentry.mdx +44 -0
- package/docs/dev-portal/zudoku/configuration/site.md +124 -0
- package/docs/dev-portal/zudoku/configuration/slots.mdx +124 -0
- package/docs/dev-portal/zudoku/configuration/vite-config.md +18 -0
- package/docs/dev-portal/zudoku/custom-plugins.md +287 -0
- package/docs/dev-portal/zudoku/customization/colors-theme.mdx +275 -0
- package/docs/dev-portal/zudoku/customization/fonts.md +110 -0
- package/docs/dev-portal/zudoku/extending/events.md +124 -0
- package/docs/dev-portal/zudoku/guides/custom-pages.md +106 -0
- package/docs/dev-portal/zudoku/guides/environment-variables.md +99 -0
- package/docs/dev-portal/zudoku/guides/mermaid.mdx +70 -0
- package/docs/dev-portal/zudoku/guides/navigation-migration.md +87 -0
- package/docs/dev-portal/zudoku/guides/navigation-rules.mdx +197 -0
- package/docs/dev-portal/zudoku/guides/processors.mdx +234 -0
- package/docs/dev-portal/zudoku/guides/static-files.md +55 -0
- package/docs/dev-portal/zudoku/guides/transforming-examples.md +156 -0
- package/docs/dev-portal/zudoku/guides/using-multiple-apis.md +87 -0
- package/docs/dev-portal/zudoku/markdown/admonitions.md +128 -0
- package/docs/dev-portal/zudoku/markdown/code-blocks.md +196 -0
- package/docs/dev-portal/zudoku/markdown/frontmatter.md +172 -0
- package/docs/dev-portal/zudoku/markdown/mdx.md +68 -0
- package/docs/dev-portal/zudoku/markdown/overview.md +275 -0
- package/docs/dev-portal/zudoku/plugins.md +5 -0
- package/docs/dev-portal/zudoku/writing.mdx +72 -0
- package/docs/errors/bad-request.mdx +39 -0
- package/docs/errors/build-error.mdx +45 -0
- package/docs/errors/fatal-project-error.mdx +39 -0
- package/docs/errors/gateway-timeout.mdx +33 -0
- package/docs/errors/get-head-body-error.mdx +41 -0
- package/docs/errors/main-mod-error.mdx +40 -0
- package/docs/errors/no-project-set.mdx +41 -0
- package/docs/errors/not-found.mdx +43 -0
- package/docs/errors/rate-limit-exceeded.mdx +31 -0
- package/docs/errors/schema-validation-failed.mdx +51 -0
- package/docs/errors/system-configuration-error.mdx +44 -0
- package/docs/errors/unauthorized.mdx +50 -0
- package/docs/errors/unknown-error.mdx +42 -0
- package/docs/errors.mdx +14 -0
- package/docs/guides/canary-routing-for-employees.mdx +385 -0
- package/docs/guides/geolocation-backend-routing.mdx +404 -0
- package/docs/guides/modify-openapi-paths.mdx +371 -0
- package/docs/guides/openapi-overlays.mdx +492 -0
- package/docs/guides/overview.mdx +12 -0
- package/docs/guides/user-based-backend-routing.mdx +437 -0
- package/docs/handlers/aws-lambda.mdx +201 -0
- package/docs/handlers/custom-handler.mdx +112 -0
- package/docs/handlers/legacy-dev-portal-handler.mdx +135 -0
- package/docs/handlers/mcp-server.mdx +730 -0
- package/docs/handlers/openapi.mdx +78 -0
- package/docs/handlers/redirect.mdx +115 -0
- package/docs/handlers/system-handlers.mdx +41 -0
- package/docs/handlers/url-forward.mdx +204 -0
- package/docs/handlers/url-rewrite.mdx +224 -0
- package/docs/handlers/websocket-handler.mdx +154 -0
- package/docs/home.mdx +6 -0
- package/docs/managed-edge/overview.md +78 -0
- package/docs/mcp-server/configuration-migration-guide.mdx +344 -0
- package/docs/mcp-server/custom-tools.mdx +487 -0
- package/docs/mcp-server/graphql.mdx +241 -0
- package/docs/mcp-server/introduction.mdx +122 -0
- package/docs/mcp-server/openai-apps-sdk.mdx +160 -0
- package/docs/mcp-server/prompts.mdx +283 -0
- package/docs/mcp-server/resources.mdx +288 -0
- package/docs/mcp-server/testing.mdx +53 -0
- package/docs/mcp-server/tools.mdx +306 -0
- package/docs/policies/_index.md +92 -0
- package/docs/policies/ab-test-inbound/intro.md +8 -0
- package/docs/policies/ab-test-inbound/policy.ts +14 -0
- package/docs/policies/ab-test-inbound/schema.json +27 -0
- package/docs/policies/ab-test-outbound/intro.md +8 -0
- package/docs/policies/ab-test-outbound/policy.ts +26 -0
- package/docs/policies/ab-test-outbound/schema.json +27 -0
- package/docs/policies/acl-policy-inbound/intro.md +5 -0
- package/docs/policies/acl-policy-inbound/policy.ts +32 -0
- package/docs/policies/acl-policy-inbound/schema.json +52 -0
- package/docs/policies/akamai-ai-firewall/schema.json +98 -0
- package/docs/policies/amberflo-metering-inbound/doc.md +183 -0
- package/docs/policies/amberflo-metering-inbound/intro.md +20 -0
- package/docs/policies/amberflo-metering-inbound/schema.json +108 -0
- package/docs/policies/api-key-inbound/doc.md +77 -0
- package/docs/policies/api-key-inbound/intro.md +30 -0
- package/docs/policies/api-key-inbound/schema.json +84 -0
- package/docs/policies/archive-request-aws-s3-inbound/intro.md +4 -0
- package/docs/policies/archive-request-aws-s3-inbound/policy.ts +58 -0
- package/docs/policies/archive-request-aws-s3-inbound/schema.json +68 -0
- package/docs/policies/archive-request-azure-storage-inbound/doc.md +31 -0
- package/docs/policies/archive-request-azure-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-azure-storage-inbound/policy.ts +54 -0
- package/docs/policies/archive-request-azure-storage-inbound/schema.json +53 -0
- package/docs/policies/archive-request-gcp-storage-inbound/doc.md +63 -0
- package/docs/policies/archive-request-gcp-storage-inbound/intro.md +4 -0
- package/docs/policies/archive-request-gcp-storage-inbound/policy.ts +68 -0
- package/docs/policies/archive-request-gcp-storage-inbound/schema.json +47 -0
- package/docs/policies/archive-response-aws-s3-outbound/intro.md +2 -0
- package/docs/policies/archive-response-aws-s3-outbound/policy.ts +59 -0
- package/docs/policies/archive-response-aws-s3-outbound/schema.json +68 -0
- package/docs/policies/archive-response-azure-storage-outbound/doc.md +31 -0
- package/docs/policies/archive-response-azure-storage-outbound/intro.md +3 -0
- package/docs/policies/archive-response-azure-storage-outbound/policy.ts +54 -0
- package/docs/policies/archive-response-azure-storage-outbound/schema.json +53 -0
- package/docs/policies/audit-log-inbound/doc.md +78 -0
- package/docs/policies/audit-log-inbound/intro.md +10 -0
- package/docs/policies/audit-log-inbound/schema.json +81 -0
- package/docs/policies/auth0-jwt-auth-inbound/doc.md +125 -0
- package/docs/policies/auth0-jwt-auth-inbound/intro.md +17 -0
- package/docs/policies/auth0-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/authzen-inbound/doc.md +24 -0
- package/docs/policies/authzen-inbound/intro.md +31 -0
- package/docs/policies/authzen-inbound/schema.json +126 -0
- package/docs/policies/axiomatics-authz-inbound/doc.md +144 -0
- package/docs/policies/axiomatics-authz-inbound/intro.md +11 -0
- package/docs/policies/axiomatics-authz-inbound/schema.json +161 -0
- package/docs/policies/basic-auth-inbound/intro.md +9 -0
- package/docs/policies/basic-auth-inbound/schema.json +99 -0
- package/docs/policies/bot-detection-inbound/intro.md +4 -0
- package/docs/policies/bot-detection-inbound/schema.json +56 -0
- package/docs/policies/brownout-inbound/doc.md +55 -0
- package/docs/policies/brownout-inbound/intro.md +12 -0
- package/docs/policies/brownout-inbound/schema.json +115 -0
- package/docs/policies/caching-inbound/doc.md +209 -0
- package/docs/policies/caching-inbound/intro.md +23 -0
- package/docs/policies/caching-inbound/schema.json +98 -0
- package/docs/policies/change-method-inbound/schema.json +56 -0
- package/docs/policies/clear-headers-inbound/schema.json +59 -0
- package/docs/policies/clear-headers-outbound/schema.json +59 -0
- package/docs/policies/clerk-jwt-auth-inbound/doc.md +85 -0
- package/docs/policies/clerk-jwt-auth-inbound/intro.md +4 -0
- package/docs/policies/clerk-jwt-auth-inbound/schema.json +68 -0
- package/docs/policies/cognito-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/cognito-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/comet-opik-tracing-inbound/schema.json +65 -0
- package/docs/policies/complex-rate-limit-inbound/doc.md +20 -0
- package/docs/policies/complex-rate-limit-inbound/intro.md +23 -0
- package/docs/policies/complex-rate-limit-inbound/schema.json +142 -0
- package/docs/policies/composite-inbound/doc.md +69 -0
- package/docs/policies/composite-inbound/intro.md +15 -0
- package/docs/policies/composite-inbound/schema.json +59 -0
- package/docs/policies/composite-outbound/intro.md +6 -0
- package/docs/policies/composite-outbound/schema.json +59 -0
- package/docs/policies/curity-phantom-token-inbound/doc.md +109 -0
- package/docs/policies/curity-phantom-token-inbound/intro.md +3 -0
- package/docs/policies/curity-phantom-token-inbound/schema.json +68 -0
- package/docs/policies/custom-code-inbound/doc.md +267 -0
- package/docs/policies/custom-code-inbound/intro.md +2 -0
- package/docs/policies/custom-code-inbound/schema.json +48 -0
- package/docs/policies/custom-code-outbound/doc.md +235 -0
- package/docs/policies/custom-code-outbound/intro.md +2 -0
- package/docs/policies/custom-code-outbound/schema.json +43 -0
- package/docs/policies/firebase-jwt-inbound/intro.md +6 -0
- package/docs/policies/firebase-jwt-inbound/schema.json +68 -0
- package/docs/policies/formdata-to-json-inbound/schema.json +60 -0
- package/docs/policies/galileo-tracing-inbound/schema.json +65 -0
- package/docs/policies/geo-filter-inbound/doc.md +33 -0
- package/docs/policies/geo-filter-inbound/schema.json +108 -0
- package/docs/policies/graphql-complexity-limit-inbound/doc.md +48 -0
- package/docs/policies/graphql-complexity-limit-inbound/intro.md +2 -0
- package/docs/policies/graphql-complexity-limit-inbound/schema.json +90 -0
- package/docs/policies/graphql-disable-introspection-inbound/doc.md +66 -0
- package/docs/policies/graphql-disable-introspection-inbound/intro.md +15 -0
- package/docs/policies/graphql-disable-introspection-inbound/schema.json +48 -0
- package/docs/policies/graphql-introspection-filter-outbound/doc.md +148 -0
- package/docs/policies/graphql-introspection-filter-outbound/schema.json +79 -0
- package/docs/policies/hmac-auth-inbound/doc.md +30 -0
- package/docs/policies/hmac-auth-inbound/intro.md +10 -0
- package/docs/policies/hmac-auth-inbound/policy.ts +70 -0
- package/docs/policies/hmac-auth-inbound/schema.json +53 -0
- package/docs/policies/http-deprecation-outbound/doc.md +73 -0
- package/docs/policies/http-deprecation-outbound/schema.json +83 -0
- package/docs/policies/ip-restriction-inbound/intro.md +8 -0
- package/docs/policies/ip-restriction-inbound/policy.ts +40 -0
- package/docs/policies/ip-restriction-inbound/schema.json +58 -0
- package/docs/policies/jwt-scopes-inbound/schema.json +59 -0
- package/docs/policies/ldap-auth-inbound/schema.json +56 -0
- package/docs/policies/mock-api-inbound/schema.json +72 -0
- package/docs/policies/moesif-inbound/doc.md +44 -0
- package/docs/policies/moesif-inbound/intro.md +6 -0
- package/docs/policies/moesif-inbound/schema.json +68 -0
- package/docs/policies/monetization-inbound/doc.md +87 -0
- package/docs/policies/monetization-inbound/intro.md +6 -0
- package/docs/policies/monetization-inbound/schema.json +102 -0
- package/docs/policies/mtls-auth-inbound/intro.md +6 -0
- package/docs/policies/mtls-auth-inbound/schema.json +68 -0
- package/docs/policies/okta-fga-authz-inbound/doc.md +181 -0
- package/docs/policies/okta-fga-authz-inbound/intro.md +20 -0
- package/docs/policies/okta-fga-authz-inbound/schema.json +104 -0
- package/docs/policies/okta-jwt-auth-inbound/intro.md +7 -0
- package/docs/policies/okta-jwt-auth-inbound/schema.json +74 -0
- package/docs/policies/open-id-jwt-auth-inbound/doc.md +58 -0
- package/docs/policies/open-id-jwt-auth-inbound/intro.md +30 -0
- package/docs/policies/open-id-jwt-auth-inbound/schema.json +128 -0
- package/docs/policies/openfga-authz-inbound/doc.md +207 -0
- package/docs/policies/openfga-authz-inbound/intro.md +17 -0
- package/docs/policies/openfga-authz-inbound/schema.json +191 -0
- package/docs/policies/openmeter-inbound/doc.md +163 -0
- package/docs/policies/openmeter-inbound/intro.md +18 -0
- package/docs/policies/openmeter-inbound/schema.json +183 -0
- package/docs/policies/prompt-injection-outbound/doc.md +106 -0
- package/docs/policies/prompt-injection-outbound/intro.md +4 -0
- package/docs/policies/prompt-injection-outbound/schema.json +74 -0
- package/docs/policies/propel-auth-jwt-inbound/doc.md +88 -0
- package/docs/policies/propel-auth-jwt-inbound/intro.md +4 -0
- package/docs/policies/propel-auth-jwt-inbound/schema.json +74 -0
- package/docs/policies/query-param-to-header-inbound/doc.md +70 -0
- package/docs/policies/query-param-to-header-inbound/intro.md +5 -0
- package/docs/policies/query-param-to-header-inbound/schema.json +74 -0
- package/docs/policies/quota-inbound/doc.md +235 -0
- package/docs/policies/quota-inbound/intro.md +7 -0
- package/docs/policies/quota-inbound/schema.json +133 -0
- package/docs/policies/rate-limit-inbound/doc.md +78 -0
- package/docs/policies/rate-limit-inbound/intro.md +30 -0
- package/docs/policies/rate-limit-inbound/schema.json +134 -0
- package/docs/policies/rbac-policy-inbound/intro.md +3 -0
- package/docs/policies/rbac-policy-inbound/policy.ts +42 -0
- package/docs/policies/rbac-policy-inbound/schema.json +52 -0
- package/docs/policies/readme-metrics-inbound/doc.md +1 -0
- package/docs/policies/readme-metrics-inbound/intro.md +3 -0
- package/docs/policies/readme-metrics-inbound/schema.json +84 -0
- package/docs/policies/remove-headers-inbound/schema.json +59 -0
- package/docs/policies/remove-headers-outbound/schema.json +59 -0
- package/docs/policies/remove-query-params-inbound/schema.json +59 -0
- package/docs/policies/replace-string-outbound/schema.json +69 -0
- package/docs/policies/request-size-limit-inbound/schema.json +60 -0
- package/docs/policies/request-validation-inbound/doc.md +72 -0
- package/docs/policies/request-validation-inbound/intro.md +24 -0
- package/docs/policies/request-validation-inbound/schema.json +98 -0
- package/docs/policies/require-origin-inbound/intro.md +12 -0
- package/docs/policies/require-origin-inbound/schema.json +65 -0
- package/docs/policies/secret-masking-outbound/doc.md +41 -0
- package/docs/policies/secret-masking-outbound/intro.md +13 -0
- package/docs/policies/secret-masking-outbound/schema.json +65 -0
- package/docs/policies/semantic-cache-inbound/doc.md +63 -0
- package/docs/policies/semantic-cache-inbound/intro.md +4 -0
- package/docs/policies/semantic-cache-inbound/schema.json +179 -0
- package/docs/policies/set-body-inbound/intro.md +7 -0
- package/docs/policies/set-body-inbound/schema.json +56 -0
- package/docs/policies/set-headers-inbound/doc.md +41 -0
- package/docs/policies/set-headers-inbound/intro.md +2 -0
- package/docs/policies/set-headers-inbound/schema.json +83 -0
- package/docs/policies/set-headers-outbound/schema.json +83 -0
- package/docs/policies/set-query-params-inbound/schema.json +83 -0
- package/docs/policies/set-status-outbound/schema.json +62 -0
- package/docs/policies/sleep-inbound/schema.json +56 -0
- package/docs/policies/stripe-webhook-verification-inbound/intro.md +2 -0
- package/docs/policies/stripe-webhook-verification-inbound/schema.json +60 -0
- package/docs/policies/supabase-jwt-auth-inbound/doc.md +29 -0
- package/docs/policies/supabase-jwt-auth-inbound/intro.md +12 -0
- package/docs/policies/supabase-jwt-auth-inbound/schema.json +86 -0
- package/docs/policies/transform-body-inbound/intro.md +8 -0
- package/docs/policies/transform-body-inbound/policy.ts +16 -0
- package/docs/policies/transform-body-inbound/schema.json +27 -0
- package/docs/policies/transform-body-outbound/intro.md +8 -0
- package/docs/policies/transform-body-outbound/policy.ts +19 -0
- package/docs/policies/transform-body-outbound/schema.json +27 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/doc.md +82 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/intro.md +20 -0
- package/docs/policies/upstream-azure-ad-service-auth-inbound/schema.json +84 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/intro.md +10 -0
- package/docs/policies/upstream-firebase-admin-auth-inbound/schema.json +68 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/intro.md +2 -0
- package/docs/policies/upstream-firebase-user-auth-inbound/schema.json +113 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/doc.md +139 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/intro.md +21 -0
- package/docs/policies/upstream-gcp-federated-auth-inbound/schema.json +96 -0
- package/docs/policies/upstream-gcp-jwt-inbound/intro.md +10 -0
- package/docs/policies/upstream-gcp-jwt-inbound/schema.json +62 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/doc.md +132 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/intro.md +25 -0
- package/docs/policies/upstream-gcp-service-auth-inbound/schema.json +95 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/doc.md +213 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/intro.md +16 -0
- package/docs/policies/upstream-zuplo-jwt-auth-inbound/schema.json +101 -0
- package/docs/policies/validate-json-schema-inbound/doc.md +129 -0
- package/docs/policies/validate-json-schema-inbound/intro.md +7 -0
- package/docs/policies/validate-json-schema-inbound/schema.json +56 -0
- package/docs/policies/web-bot-auth-inbound/doc.md +104 -0
- package/docs/policies/web-bot-auth-inbound/intro.md +16 -0
- package/docs/policies/web-bot-auth-inbound/schema.json +76 -0
- package/docs/policies/xml-to-json-outbound/doc.md +71 -0
- package/docs/policies/xml-to-json-outbound/intro.md +4 -0
- package/docs/policies/xml-to-json-outbound/schema.json +117 -0
- package/docs/programmable-api/audit-log.mdx +74 -0
- package/docs/programmable-api/background-dispatcher.mdx +124 -0
- package/docs/programmable-api/background-loader.mdx +104 -0
- package/docs/programmable-api/cache.mdx +186 -0
- package/docs/programmable-api/compatibility-dates.mdx +201 -0
- package/docs/programmable-api/console-logging.mdx +48 -0
- package/docs/programmable-api/context-data.mdx +127 -0
- package/docs/programmable-api/custom-cors-policy.mdx +64 -0
- package/docs/programmable-api/environment.mdx +328 -0
- package/docs/programmable-api/hooks.mdx +569 -0
- package/docs/programmable-api/http-problems.mdx +385 -0
- package/docs/programmable-api/jwt-service-plugin.mdx +420 -0
- package/docs/programmable-api/logger.mdx +223 -0
- package/docs/programmable-api/memory-zone-read-through-cache.mdx +96 -0
- package/docs/programmable-api/node-modules.mdx +67 -0
- package/docs/programmable-api/not-found-handler.mdx +47 -0
- package/docs/programmable-api/oauth-protected-resource-plugin.mdx +46 -0
- package/docs/programmable-api/overview.mdx +213 -0
- package/docs/programmable-api/problem-response-formatter.mdx +183 -0
- package/docs/programmable-api/request-user.mdx +289 -0
- package/docs/programmable-api/reusing-code.mdx +26 -0
- package/docs/programmable-api/route-raw.mdx +55 -0
- package/docs/programmable-api/runtime-behaviors.mdx +25 -0
- package/docs/programmable-api/runtime-errors.mdx +246 -0
- package/docs/programmable-api/runtime-extensions.mdx +340 -0
- package/docs/programmable-api/safely-clone-a-request-or-response.mdx +57 -0
- package/docs/programmable-api/streaming-zone-cache.mdx +155 -0
- package/docs/programmable-api/web-crypto-apis.mdx +219 -0
- package/docs/programmable-api/web-standard-apis.mdx +109 -0
- package/docs/programmable-api/zone-cache.mdx +131 -0
- package/docs/programmable-api/zp-body-removed.mdx +32 -0
- package/docs/programmable-api/zuplo-context.mdx +414 -0
- package/docs/programmable-api/zuplo-id-token.mdx +90 -0
- package/docs/programmable-api/zuplo-json.mdx +91 -0
- package/docs/programmable-api/zuplo-request.mdx +200 -0
- package/docs/sample-apis.mdx +78 -0
- package/docs/self-hosted/overview.md +60 -0
- package/package.json +6 -5
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Setting up Auth0 as an Authentication Server for MCP OAuth Authentication
|
|
3
|
+
sidebar_label: "Auth0 Setup"
|
|
4
|
+
description:
|
|
5
|
+
Learn how to configure Auth0 as an Authorization Server for use with the MCP
|
|
6
|
+
Server handler and OAuth authentication.
|
|
7
|
+
tags:
|
|
8
|
+
- authentication
|
|
9
|
+
- integrations
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
In this guide, you'll learn how to configure Auth0 as an Authorization Server
|
|
13
|
+
for use with the MCP Server handler. See the
|
|
14
|
+
[MCP Server Handler docs](../handlers/mcp-server.mdx#oauth-authentication) for
|
|
15
|
+
instructions on how to configure your Zuplo gateway to support OAuth
|
|
16
|
+
authentication for your MCP Server.
|
|
17
|
+
|
|
18
|
+
This guide will assume that you already have a working Auth0 account and tenant.
|
|
19
|
+
|
|
20
|
+
### Create an Auth0 API
|
|
21
|
+
|
|
22
|
+
First, you will need to create an Auth0 API. This API will be used to represent
|
|
23
|
+
your MCP Server.
|
|
24
|
+
|
|
25
|
+
1. In the Auth0 dashboard, navigate to the _Applications > APIs_ section and
|
|
26
|
+
click **Create API**.
|
|
27
|
+
2. Set the **Name** to something like "MCP Server" and the **Identifier** to the
|
|
28
|
+
canonical URL of your MCP Server. For example, if your MCP Server is hosted
|
|
29
|
+
at `https://my-gateway.zuplo.dev/mcp`, then the identifier would be
|
|
30
|
+
`https://my-gateway.zuplo.dev/mcp`. **The trailing slash isn't required.**
|
|
31
|
+
3. Leave the **Signing Algorithm** as `RS256` and click **Create**.
|
|
32
|
+
|
|
33
|
+
### Enable Dynamic Client Registration
|
|
34
|
+
|
|
35
|
+
Next, you will need to enable Dynamic Client Registration for the API you just
|
|
36
|
+
created.
|
|
37
|
+
|
|
38
|
+
1. In the Auth0 dashboard, navigate to the tenant settings in **Settings** on
|
|
39
|
+
the left hand sidebar.
|
|
40
|
+
2. Navigate to the **Advanced** tab.
|
|
41
|
+
3. Scroll down to the **Settings** section and check the toggle for **OIDC
|
|
42
|
+
Dynamic Application Registration**. Also ensure that the **Enable Application
|
|
43
|
+
Connections** toggle is checked.
|
|
44
|
+
|
|
45
|
+
### Configure the Connection
|
|
46
|
+
|
|
47
|
+
Next, you will need to configure an Auth0 Connection for your API.
|
|
48
|
+
|
|
49
|
+
1. Click the **Authentication** tab in the left hand sidebar.
|
|
50
|
+
|
|
51
|
+
2. Click the type of Authentication connection you would like to use. For this
|
|
52
|
+
tutorial, we will use the default Database
|
|
53
|
+
**Username-Password-Authentication** connection. If you aren't using the
|
|
54
|
+
default database connection, then create a new connection of the type you
|
|
55
|
+
want to use and configure it with your desired settings. Click the **Try
|
|
56
|
+
Connection** button to make sure that it's working. Note the Identifier of
|
|
57
|
+
the connection. You will need this in one of the next steps.
|
|
58
|
+
|
|
59
|
+
3. Promote the connection that you would like to use for your MCP Client
|
|
60
|
+
authentication to be a domain level connection. To do this, you will need to
|
|
61
|
+
use the Auth0 management API. You will need to create an Auth0 Management API
|
|
62
|
+
token with the `update:connections` scope. You can obtain one by following
|
|
63
|
+
this
|
|
64
|
+
[Auth0 doc](https://auth0.com/docs/secure/tokens/access-tokens/management-api-access-tokens/get-management-api-access-tokens-for-testing).
|
|
65
|
+
|
|
66
|
+
4. Follow the
|
|
67
|
+
[Promote Connections to Domain Level](https://auth0.com/docs/authenticate/identity-providers/promote-connections-to-domain-level)
|
|
68
|
+
Auth0 doc to promote your connection to a domain level connection. You will
|
|
69
|
+
need the connection ID from step 2, as well as the Auth0 Management API token
|
|
70
|
+
from step 3.
|
|
71
|
+
|
|
72
|
+
For example using curl:
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
curl --request PATCH \
|
|
76
|
+
--url 'https://your-auth0-domain.us.auth0.com/api/v2/connections/CONNECTION_ID' \
|
|
77
|
+
--header 'authorization: Bearer MGMT_API_ACCESS_TOKEN' \
|
|
78
|
+
--header 'cache-control: no-cache' \
|
|
79
|
+
--header 'content-type: application/json' \
|
|
80
|
+
--data '{ "is_domain_connection": true }'
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
5. Configure a Default Audience by clicking on Settings > General. Then in the
|
|
84
|
+
API Authorization Settings, modify the Default Audience. See the Auth0 doc on
|
|
85
|
+
[API Authorization Settings](https://auth0.com/docs/get-started/tenant-settings#api-authorization-settings)
|
|
86
|
+
for more information on how to configure a default audience. The audience
|
|
87
|
+
should be the identifier of the API you created in
|
|
88
|
+
[Create an Auth0 API](#create-an-auth0-api).
|
|
89
|
+
|
|
90
|
+
### Configure OAuth on Zuplo
|
|
91
|
+
|
|
92
|
+
To set up your gateway to support OAuth authentication for your MCP Server, you
|
|
93
|
+
will need to do the following:
|
|
94
|
+
|
|
95
|
+
1. Create an OAuth policy on your MCP Server route. This policy will need to
|
|
96
|
+
have the option `"oAuthResourceMetadataEnabled": true`, for example:
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"name": "mcp-oauth-inbound",
|
|
100
|
+
"policyType": "oauth-inbound",
|
|
101
|
+
"handler": {
|
|
102
|
+
"export": "Auth0JwtInboundPolicy",
|
|
103
|
+
"module": "$import(@zuplo/runtime)",
|
|
104
|
+
"options": {
|
|
105
|
+
"auth0Domain": "my-auth0-domain.us.auth0.com",
|
|
106
|
+
"audience": "https://my-mcp-audience",
|
|
107
|
+
"oAuthResourceMetadataEnabled": true
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
2. Add the OAuth policy to the MCP Server route. For example:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
"paths": {
|
|
116
|
+
"/mcp": {
|
|
117
|
+
"post": {
|
|
118
|
+
"x-zuplo-route": {
|
|
119
|
+
// etc. etc.
|
|
120
|
+
// other properties and route handlers for MCP
|
|
121
|
+
|
|
122
|
+
"policies": {
|
|
123
|
+
"inbound": [
|
|
124
|
+
"mcp-oauth-inbound"
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
3. Add the `OAuthProtectedResourcePlugin` to your `runtimeInit` function in the
|
|
134
|
+
`zuplo.runtime.ts` file:
|
|
135
|
+
|
|
136
|
+
```ts
|
|
137
|
+
import {
|
|
138
|
+
RuntimeExtensions,
|
|
139
|
+
OAuthProtectedResourcePlugin,
|
|
140
|
+
} from "@zuplo/runtime";
|
|
141
|
+
|
|
142
|
+
export function runtimeInit(runtime: RuntimeExtensions) {
|
|
143
|
+
runtime.addPlugin(
|
|
144
|
+
new OAuthProtectedResourcePlugin({
|
|
145
|
+
authorizationServers: ["https://your-auth0-domain.us.auth0.com"],
|
|
146
|
+
resourceName: "My MCP OAuth Resource",
|
|
147
|
+
}),
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
See the
|
|
153
|
+
[OAuth Protected Resource Plugin docs](../programmable-api/oauth-protected-resource-plugin)
|
|
154
|
+
for more details.
|
|
155
|
+
|
|
156
|
+
See the
|
|
157
|
+
[MCP Server Handler docs](../handlers/mcp-server.mdx#oauth-authentication) for
|
|
158
|
+
more details.
|
|
159
|
+
|
|
160
|
+
### Testing
|
|
161
|
+
|
|
162
|
+
Use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), a
|
|
163
|
+
developer focused tool for building MCP servers, to quickly and easily test out
|
|
164
|
+
your MCP server:
|
|
165
|
+
|
|
166
|
+
```sh
|
|
167
|
+
npx @modelcontextprotocol/inspector
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
To connect to your remote Zuplo MCP server in the Inspector UI:
|
|
171
|
+
|
|
172
|
+
1. Set the **Transport Type** to "Streamable HTTP"
|
|
173
|
+
2. Set the **URL** to your Zuplo gateway with the route used by the MCP Server
|
|
174
|
+
Handler (that is, `https://my-gateway.zuplo.dev/mcp`)
|
|
175
|
+
3. You will need to login using the OAuth flow using the **Open Auth Settings**
|
|
176
|
+
button.
|
|
177
|
+
4. Hit **Connect**.
|
|
178
|
+
|
|
179
|
+
For debugging your OAuth configuration, hit the **Open Auth Settings** button in
|
|
180
|
+
the Inspector UI to start the OAuth flow. When first setting up the OAuth flow,
|
|
181
|
+
it's recommmended to use the **Guided OAuth Flow** which you will see when you
|
|
182
|
+
open the OAuth settings. This will allow you to debug the flow step by step.
|
|
183
|
+
|
|
184
|
+
You should be able to hit the **Continue** button in the Inspector UI at each
|
|
185
|
+
step of the flow successfully. If you need more help debugging, see
|
|
186
|
+
[Testing OAuth on Zuplo](../handlers/mcp-server.mdx#oauth-testing).
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Setting up Okta as an Authentication Server for MCP OAuth Authentication
|
|
3
|
+
sidebar_label: "Okta Setup"
|
|
4
|
+
description:
|
|
5
|
+
Learn how to configure Okta as an authorization server for OAuth
|
|
6
|
+
authentication with MCP Server handler.
|
|
7
|
+
tags:
|
|
8
|
+
- authentication
|
|
9
|
+
- integrations
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<!-- vale Vale.Spelling["URIs"] = NO -->
|
|
13
|
+
|
|
14
|
+
In this guide, you'll learn how to configure Okta as an authorization server for
|
|
15
|
+
use with the MCP Server handler. See the
|
|
16
|
+
[MCP Server Handler docs](../handlers/mcp-server.mdx#oauth-authentication) for
|
|
17
|
+
instructions on how to configure your Zuplo gateway to support OAuth
|
|
18
|
+
authentication for your MCP Server.
|
|
19
|
+
|
|
20
|
+
This guide will assume that you already have a working Okta account and
|
|
21
|
+
organization.
|
|
22
|
+
|
|
23
|
+
## Create an Auth Server
|
|
24
|
+
|
|
25
|
+
First, you will need to create an Okta authorization server. This server will be
|
|
26
|
+
used to authorize requests to your MCP Server per
|
|
27
|
+
[the Model Context Protocol authorization specification.](https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization)
|
|
28
|
+
|
|
29
|
+
1. In the Okta Admin Console, navigate to **Security > API** in the left
|
|
30
|
+
sidebar.
|
|
31
|
+
2. Click **Add Authorization Server**.
|
|
32
|
+
3. Set the **Name** to something like "MCP Server Authorization".
|
|
33
|
+
4. Set the **Audience** to the canonical URL of your MCP Server. For example, if
|
|
34
|
+
your MCP Server is hosted at `https://my-gateway.zuplo.dev/mcp`, then the
|
|
35
|
+
audience would be `https://my-gateway.zuplo.dev/mcp`. **The trailing slash is
|
|
36
|
+
not required.**
|
|
37
|
+
5. Add a **Description** and click **Save**.
|
|
38
|
+
|
|
39
|
+
Note the **Issuer Metadata URI** shown in the authorization server details.
|
|
40
|
+
You'll need this for your Zuplo configuration.
|
|
41
|
+
|
|
42
|
+
## Configure Scopes
|
|
43
|
+
|
|
44
|
+
Next, you'll need to configure the scopes for your authorization server.
|
|
45
|
+
|
|
46
|
+
1. In your authorization server settings, click the **Scopes** tab.
|
|
47
|
+
2. Click **Add Scope**.
|
|
48
|
+
3. Set the **Name** to something like `mcp:access`.
|
|
49
|
+
4. Add a **Display phrase** and **Description** (like "Access to MCP Server
|
|
50
|
+
tools").
|
|
51
|
+
5. Check **Set as a default scope** and click **Create**.
|
|
52
|
+
|
|
53
|
+
## Create an OAuth Client Application
|
|
54
|
+
|
|
55
|
+
Next, you'll need to create an OAuth client application for your MCP server.
|
|
56
|
+
|
|
57
|
+
:::note
|
|
58
|
+
|
|
59
|
+
Okta requires an admin API key for to dynamically register clients. This may not
|
|
60
|
+
be well supported by MCP clients. However, MCP clients should also support an
|
|
61
|
+
alternative way to obtain a client ID and client credential. This document
|
|
62
|
+
assumes an MCP client can set these fields without having to dynamically
|
|
63
|
+
register a client.
|
|
64
|
+
|
|
65
|
+
:::
|
|
66
|
+
|
|
67
|
+
1. In the Okta Admin Console, navigate to **Applications > Applications** in the
|
|
68
|
+
left sidebar.
|
|
69
|
+
2. Click **Create App Integration**.
|
|
70
|
+
3. Select **OIDC - OpenID Connect** as the sign-in method.
|
|
71
|
+
4. Select **Web Application** as the application type and click **Next**.
|
|
72
|
+
5. Set the **App integration name** to something like "MCP Client Application".
|
|
73
|
+
6. For **Grant types**, check **Authorization Code** and **Refresh Token**.
|
|
74
|
+
7. For **Sign-in redirect URIs**, leave this empty or set to a placeholder like
|
|
75
|
+
`http://localhost:3000/callback`.
|
|
76
|
+
8. For **Controlled access**, select **Allow everyone in your organization to
|
|
77
|
+
access**.
|
|
78
|
+
9. Click **Save**.
|
|
79
|
+
|
|
80
|
+
After creating the application, note the **Client ID** and **Client Secret**
|
|
81
|
+
from the application's **General** tab. You'll need these for your MCP client
|
|
82
|
+
configuration.
|
|
83
|
+
|
|
84
|
+
## Create a Default Policy and Rule
|
|
85
|
+
|
|
86
|
+
You'll need to create an access policy for your authorization server.
|
|
87
|
+
|
|
88
|
+
1. In your authorization server settings (found in **Security > API**) click the
|
|
89
|
+
**Access Policies** tab.
|
|
90
|
+
2. Click **Add New Access Policy**.
|
|
91
|
+
3. Set the **Name** to something like "MCP Client Access Policy".
|
|
92
|
+
4. Add a **Description** and assign it to **All clients**.
|
|
93
|
+
5. Click **Create Policy**.
|
|
94
|
+
|
|
95
|
+
Now create a rule for this policy:
|
|
96
|
+
|
|
97
|
+
1. Click **Add Rule** within your new policy.
|
|
98
|
+
2. Set the **Rule Name** to something like "Allow MCP Access".
|
|
99
|
+
3. In the **IF AND** section:
|
|
100
|
+
- **Grant type is**: Select the grant type. For the widest grant for all MCP
|
|
101
|
+
clients, select **Client Credentials**, **Authorization Code**, and
|
|
102
|
+
**Device Authorization**
|
|
103
|
+
- **User is**: Select **Any user assigned the app**
|
|
104
|
+
- **Scopes requested**: Select **The following scopes** and choose the scope
|
|
105
|
+
you created for the authorization server (that is, `mcp:access`)
|
|
106
|
+
4. In the **THEN AND** section:
|
|
107
|
+
- **Use this inline hook**: None (disabled)
|
|
108
|
+
- **Access token lifetime is**: Set to desired value (for example, 1 hour)
|
|
109
|
+
- **Refresh token lifetime is**: Set to desired value (for example, 90 days)
|
|
110
|
+
5. Click **Create Rule**.
|
|
111
|
+
|
|
112
|
+
## Configure OAuth on Zuplo
|
|
113
|
+
|
|
114
|
+
To set up your gateway to support OAuth authentication for your MCP Server, you
|
|
115
|
+
will need to do the following:
|
|
116
|
+
|
|
117
|
+
1. Create an Okta JWT Auth inbound policy on your MCP Server route. This policy
|
|
118
|
+
will need to have the option `"oAuthResourceMetadataEnabled": true` to enable
|
|
119
|
+
authorization resource metadata discovery.
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"name": "mcp-okta-oauth-inbound",
|
|
124
|
+
"policyType": "okta-jwt-auth-inbound",
|
|
125
|
+
"handler": {
|
|
126
|
+
"export": "OktaJwtInboundPolicy",
|
|
127
|
+
"module": "$import(@zuplo/runtime)",
|
|
128
|
+
"options": {
|
|
129
|
+
"oAuthResourceMetadataEnabled": true,
|
|
130
|
+
"audience": "https://my-gateway.zuplo.dev/mcp",
|
|
131
|
+
"issuer": "https://your-okta-domain.okta.com/oauth2/your-auth-server-id"
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
- Replace `my-gateway.zuplo.dev/mcp` with the audience you defined in your
|
|
138
|
+
authorization server.
|
|
139
|
+
- Replace `your-okta-domain` in the `issuer` field with your actual Okta
|
|
140
|
+
domain.
|
|
141
|
+
- Replace `your-auth-server-id` in the `issuer` field with the actual ID of
|
|
142
|
+
your Okta authorization server.
|
|
143
|
+
|
|
144
|
+
2. Add the OAuth policy to the MCP Server route. For example:
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
"paths": {
|
|
148
|
+
"/mcp": {
|
|
149
|
+
"post": {
|
|
150
|
+
"x-zuplo-route": {
|
|
151
|
+
|
|
152
|
+
// etc. etc.
|
|
153
|
+
// other properties for the MCP server route handler
|
|
154
|
+
|
|
155
|
+
"policies": {
|
|
156
|
+
"inbound": [
|
|
157
|
+
"mcp-oauth-inbound"
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
3. Add the `OAuthProtectedResourcePlugin` to your `runtimeInit` function in the
|
|
167
|
+
`modules/zuplo.runtime.ts` file:
|
|
168
|
+
|
|
169
|
+
```ts
|
|
170
|
+
import {
|
|
171
|
+
RuntimeExtensions,
|
|
172
|
+
OAuthProtectedResourcePlugin,
|
|
173
|
+
} from "@zuplo/runtime";
|
|
174
|
+
|
|
175
|
+
export function runtimeInit(runtime: RuntimeExtensions) {
|
|
176
|
+
runtime.addPlugin(
|
|
177
|
+
new OAuthProtectedResourcePlugin({
|
|
178
|
+
authorizationServers: [
|
|
179
|
+
"https://your-okta-domain.okta.com/oauth2/your-auth-server-id",
|
|
180
|
+
],
|
|
181
|
+
resourceName: "My MCP OAuth Resource",
|
|
182
|
+
}),
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
- Replace `your-okta-domain` in the `issuer` field with your actual Okta
|
|
188
|
+
domain.
|
|
189
|
+
- Replace `your-auth-server-id` in the `issuer` field with the actual ID of
|
|
190
|
+
your Okta authorization server.
|
|
191
|
+
|
|
192
|
+
This plugin populates the `.well-known` routes for the MCP server auth
|
|
193
|
+
metadata discovery. This enables MCP clients to automatically discover the
|
|
194
|
+
authorization issuer endpoint. See the
|
|
195
|
+
[OAuth Protected Resource Plugin docs](../programmable-api/oauth-protected-resource-plugin)
|
|
196
|
+
for more details on this runtime plugin.
|
|
197
|
+
|
|
198
|
+
## Testing
|
|
199
|
+
|
|
200
|
+
The [MCP Inspector](https://github.com/modelcontextprotocol/inspector) doesn't
|
|
201
|
+
currently support setting an initial access token or presenting a UI for setting
|
|
202
|
+
the client ID or secret.
|
|
203
|
+
|
|
204
|
+
Refer to the [Manual OAuth MCP Testing](./manual-mcp-oauth-testing) guide for
|
|
205
|
+
further instructions on testing your MCP server with `curl`.
|
|
206
|
+
|
|
207
|
+
If you need more help debugging, see
|
|
208
|
+
[Testing OAuth on Zuplo](../handlers/mcp-server.mdx#oauth-testing).
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Script to Convert URL Params to OpenAPI Format
|
|
3
|
+
sidebar_label: "Convert URLs to OpenAPI"
|
|
4
|
+
description:
|
|
5
|
+
Learn how to convert Zuplo URL parameters to standard OpenAPI format using
|
|
6
|
+
this JavaScript conversion script.
|
|
7
|
+
tags:
|
|
8
|
+
- openapi
|
|
9
|
+
- deployment
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
This is an example script that shows how to convert URLs in your Zuplo OpenAPI
|
|
13
|
+
files to OpenAPI formatted parameters.
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
import fs from "fs/promises";
|
|
17
|
+
import kabab from "kebab-case";
|
|
18
|
+
import path from "path";
|
|
19
|
+
import { pathToRegexp } from "path-to-regexp";
|
|
20
|
+
import prettier from "prettier";
|
|
21
|
+
|
|
22
|
+
const files = await fs.readdir(path.join(process.cwd(), "config"));
|
|
23
|
+
await Promise.all(
|
|
24
|
+
files.map(async (file) => {
|
|
25
|
+
if (file.endsWith(".oas.json")) {
|
|
26
|
+
const specPath = path.join(process.cwd(), "config", file);
|
|
27
|
+
const content = await fs.readFile(specPath, "utf-8").then(JSON.parse);
|
|
28
|
+
const newPaths = {};
|
|
29
|
+
Object.entries(content.paths).forEach(([path, entry]) => {
|
|
30
|
+
delete entry["x-zuplo-path"];
|
|
31
|
+
const keys = [];
|
|
32
|
+
pathToRegexp(path, keys);
|
|
33
|
+
let newPath = path;
|
|
34
|
+
keys.forEach((key) => {
|
|
35
|
+
newPath = newPath.replace(`:${key.name}`, `{${kababCase(key.name)}}`);
|
|
36
|
+
});
|
|
37
|
+
Object.entries(entry).forEach(([method, methodEntry]) => {
|
|
38
|
+
if (entry[method].parameters) {
|
|
39
|
+
entry[method].parameters.forEach((param) => {
|
|
40
|
+
if (param.in === "path") {
|
|
41
|
+
param.name = kababCase(param.name);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
newPaths[newPath] = entry;
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
content.paths = newPaths;
|
|
50
|
+
|
|
51
|
+
const json = JSON.stringify(content, null, 2);
|
|
52
|
+
const output = prettier.format(json, { parser: "json" });
|
|
53
|
+
|
|
54
|
+
await fs.writeFile(specPath, output, "utf-8");
|
|
55
|
+
}
|
|
56
|
+
}),
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
function kababCase(str) {
|
|
60
|
+
return kabab(str).replaceAll("-u-r-l", "-url").replaceAll("-a-p-i", "-api");
|
|
61
|
+
}
|
|
62
|
+
```
|