Teleport Application Access lets you expose internal web applications to authorized users without opening firewall rules, deploying a VPN, or managing per-app credentials. The Teleport Application Service establishes a reverse tunnel to the Proxy Service and registers each configured application as a resource in your cluster. Users access protected apps through the Teleport Web UI or via a local proxy — after authenticating with your SSO provider and satisfying any MFA or access request requirements.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/gravitational/teleport/llms.txt
Use this file to discover all available pages before exploring further.
How Teleport proxies web applications
When a user navigates to a protected application, the request flows through the Teleport Proxy Service to the Application Service running in the same private network as the app:- No VPN required — the Application Service calls out to the Proxy; no inbound firewall rules are needed for the app host.
- SSO-backed access — every access is tied to an authenticated Teleport identity.
- JWT injection — Teleport adds a signed JWT header to every proxied request so your application can trust the caller’s identity without its own auth layer.
- Audit trail — all application access events are recorded in the Teleport audit log.
Prerequisites
- A running Teleport cluster. See Deploy a Cluster.
- A host (VM or container) in the same network as the app, where the Application Service will run.
tctlauthenticated to your Teleport cluster.- A wildcard DNS record pointing
*.teleport.example.com(or*.mytenant.teleport.sh) to your Proxy Service. Teleport assigns each app a subdomain likegrafana.teleport.example.com.
Enrolling a web application
The example below protects a Grafana instance running onlocalhost:3000. The same steps apply to any internal HTTP or TCP service.
Generate a join token for the Application Service
Configure the Application Service
Generate a The generated To protect multiple apps on the same host, add additional entries under
teleport.yaml configuration on the Application Service host:- Teleport Enterprise Cloud
- Self-Hosted
/etc/teleport.yaml enables only the Application Service:apps:Access the application
From the Teleport Web UI:Local port forwarding (for CLI tools or scripts):
- Sign in at your cluster address.
- Navigate to the Applications tab.
- Click Launch on the Grafana tile.
JWT-based authentication headers
Every request proxied by Teleport includes a signed JSON Web Token in theTeleport-JWT-Assertion header. Your application can verify this JWT against Teleport’s JWKS endpoint to trust the caller’s identity without maintaining its own user database.
The JWT payload contains:
JWT verification lets you build identity-aware applications without integrating an external identity provider directly. See the JWT Integration documentation for library examples.
Controlling access with roles
Teleport roles control which apps a user can access using label selectors on theapp_labels field:
sre-apps role can access any app labeled team: sre. You can combine label selectors, require access requests for sensitive apps, or scope access to specific subpaths.
Protecting TCP applications
For non-HTTP services (databases not yet supported natively, SMTP servers, internal APIs), use Teleport’s TCP app mode:tsh proxy app:
Next steps
Access Controls & RBAC
Define fine-grained role policies to control which users can launch which apps.
SSO Integration
Gate application access behind Okta, GitHub, or any SAML/OIDC provider.
Access Requests
Require manager approval before granting access to sensitive internal tools.
Machine Identity
Allow CI/CD pipelines to access internal apps using short-lived bot certificates.
