The Auth0 Terraform Provider is the official plugin for managing Auth0 tenant configurations as infrastructure as code. It acts as a bridge between Terraform's declarative HCL configuration language and the Auth0 Management API, enabling version controlled, repeatable deployment of authentication infrastructure.
The provider manages 70+ resource types across identity management, authorization, security, extensibility, and tenant configuration. Each resource implements standard Terraform lifecycle operations with state synchronization to ensure configuration drift detection. The provider implements Terraform's plugin protocol via the schema.Provider interface.
This article covers installation, configuration, capabilities, release history, and operational best practices for using the Auth0 Terraform Provider with Terraform and OpenTofu.
What the Auth0 Terraform Provider Manages
The provider exposes Auth0 tenant objects as declarative resources. Resource coverage spans identity management, authorization, security, extensibility, and tenant configuration.
Key capability areas include:
- Identity management resources for applications, connections, users and clients
- Authorization resources for roles, permissions, resource servers and client grants
- Security resources for tenant settings, attack protection and session policies
- Extensibility resources for Actions, hooks, log streams and event streams
- Tenant configuration resources for branding, domains and general settings
Each resource supports Create, Read, Update, Delete lifecycle operations with state synchronization to detect drift between the desired configuration in HCL and the actual state in the Auth0 tenant.
Installation and Provider Declaration
Terraform uses the Terraform Registry to download and install providers. To install this provider, copy and paste the following code into your Terraform configuration. Then, run terraform init.
The required provider block uses source = "auth0/auth0".
hcl
terraform {
required_providers {
auth0 = {
source = "auth0/auth0"
version = ">= 1.0.0" # Refer to docs for latest version
}
}
}
provider "auth0" {}
After declaring the provider, run:
bash
$ terraform init
An alternative declaration used in configuration examples sets required_version and a pinned provider version:
```hcl
versions.tf - Declare the Auth0 provider
terraform {
requiredversion = ">= 1.0"
requiredproviders {
auth0 = {
source = "auth0/auth0"
version = "~> 1.47"
}
}
}
```
The Auth0 Terraform Provider is also available for OpenTofu, the open source Terraform compatible tool. You can find the Auth0 provider in the OpenTofu Registry.
Prerequisites and API Credentials
The Auth0 Terraform provider lets you define your entire identity configuration as code - applications, connections, actions, roles, and more. This approach brings several benefits: changes go through code review, configurations are consistent across environments, and you have a clear audit trail of who changed what and when.
Prerequisites:
- Terraform 1.0 or later
- An Auth0 tenant
- A Machine-to-Machine application in Auth0 with Management API permissions
Setting up API credentials requires a Machine-to-Machine application with access to the Auth0 Management API.
- Log in to the Auth0 Dashboard
- Go to Applications > Applications
- Click Create Application
- Select Machine to Machine Applications
- Authorize it for the Auth0 Management API
- Select all scopes you need for full management
- Note the Domain, Client ID, and Client Secret
Provider configuration uses those values:
```hcl
provider.tf - Configure Auth0
provider "auth0" {
domain = var.auth0domain
clientid = var.auth0clientid
clientsecret = var.auth0client_secret
}
```
Variables:
hcl
variable "auth0_domain" {
type = string
description = "Auth0 tenant domain (e.g., yourapp.us.auth0.com)"
}
variable "auth0_client_id" {
type = string
description = "Auth0 M2M application client ID"
}
variable "auth0_client_secret" {
type = string
description = "Auth0 M2M application client secret"
}
Provider Configuration Patterns
For multi environment management, use Terraform workspaces or separate state files for dev, staging, and production tenants.
Explicit connection to application mapping can be enforced with auth0connectionclients resource to explicitly control which applications can use each connection.
RBAC can be managed through Terraform for a complete audit trail. Enable RBAC on your APIs and manage permissions through Terraform.
Actions should be preferred over Rules or Hooks. Actions are the modern replacement and are fully supported by the provider.
Secrets handling is important for security. Store client secrets in a secrets manager rather than in Terraform state. Consider using Vault or AWS Secrets Manager.
Provider Selection Considerations
The Deploy CLI is not the only tool available for managing your Auth0 tenant configuration, there is also an officially supported Terraform Provider. Terraform is a third party tool for representing your cloud resources' configurations as code. It has an established plug in framework that supports a wide array of cloud providers, including Auth0.
Both the Deploy CLI and Terraform Provider exist to help you manage your Auth0 tenant configurations, but each has their own set of pros and cons.
You may want to consider the Auth0 Terraform Provider if:
- Your development workflows already leverages Terraform or OpenTofu
- Your tenant management needs are granular or only pertain to a few specific resources
You may not want to consider the Auth0 Terraform Provider if:
- Your development workflow does not use Terraform or OpenTofu, requiring extra setup upfront
- Your development workflows are primarily concerned with managing your tenants in bulk
- Your tenant has lots of existing resources, may require significant effort to import
Resource Coverage and Enhancements
The provider manages 70+ resource types. Release notes show continuous expansion of resource attributes and capabilities.
Release v1.51.0 enhancements include:
- resource/auth0connection – Add idtokensessionexpiry_supported field to OIDC and Okta connection options, enabling IPSIE session expiry claim support
- resource/auth0client – Add support for configuring sessiontransfer.delegation with allowdelegatedaccess and enforcedevicebinding for Custom Token Exchange and impersonation via Session Transfer
- resource/auth0client – Add support for configuring fedcmlogin to enable Google One Tap FedCM sign in on the New Universal Login page
- resource/auth0connection – Add support for configuring type and sendbackchannelnonce options for Okta Workforce connections
- resource/auth0clientcredentials – Add support for a write only clientsecret via clientsecretwo and clientsecretwoversion
- resource/auth0resourceserver – Add support for configuring allowonlineaccess and allowonlineaccesswithephemeral_sessions for Online Refresh Tokens
Bug fixes are listed alongside enhancements in each release.
Release v1.50.0 enhancements include:
- resource/auth0eventstream – Add support for customheader webhook authorization method, with headerkey, headervalue, headervaluewo, and headervaluewoversion fields
- resource/auth0logstream – Add support for a write only Datadog API key via datadogapikeywo and datadogapikeywo_version
Release v1.46.0 features include:
- resource/auth0eventstream – Add support for configuring status field with enabled/disabled options
- resource/auth0client – Add support for configuring thirdpartysecuritymode and redirection_policy
- resource/auth0clientgrant – Add support for configuring default_for to specify default grants for third party clients
- resource/auth0tenant – Add support for configuring dynamicclientregistrationsecurity_mode
- resource/auth0connection – Add write support for tokenendpointjwtcaaud_format for OIDC and Okta connections
- resource/auth0connectiondirectory – Add support for configuring synchronize_groups for Inbound Groups Directory Provisioning in Google Workspaces
- resource/auth0connectiondirectorysynchronizedgroups – Add support for managing synchronized Google Workspace group IDs via directory provisioning
- data-source/auth0connectiondirectorysynchronizedgroups – Add support for retrieving synchronized group IDs for a connection's directory provisioning
- resource/auth0connection – Add support for configuring apienable_groups for Google Workspace connections
Existing state will be migrated automatically on the next terraform plan or terraform apply.
Version History Summary
The following table summarizes recent provider releases and their focus areas.
| Version | Focus Area | Notable Resources |
|---|---|---|
| v1.51.0 | Connection session expiry, Session Transfer, FedCM, Okta Workforce, client secrets write only, Online Refresh Tokens | auth0connection, auth0client, auth0clientcredentials, auth0resourceserver |
| v1.50.0 | Event stream custom headers, Datadog log stream write only key | auth0eventstream, auth0logstream |
| v1.46.0 | Event stream status, client security mode, redirection policy, client grants, tenant dynamic registration, connection token endpoint, directory provisioning | auth0eventstream, auth0client, auth0clientgrant, auth0tenant, auth0connection, auth0connection_directory |
Operational Best Practices
The Auth0 Terraform provider gives you full control over your identity platform configuration. By managing applications, connections, roles, and authentication flows as code, you get consistency across environments and a clear audit trail for security reviews. This is especially important for identity infrastructure, where misconfigurations can have serious security implications.
Recommended practices include:
- Use version constraints such as ~> 1.47 or >= 1.0.0 to control provider upgrades
- Keep provider and Terraform versions aligned with the prerequisites
- Separate state per environment to avoid accidental cross environment changes
- Import existing resources before managing them to avoid recreation
- Use data sources to read existing Auth0 objects for reference in configurations
- Prefer Actions over legacy Rules and Hooks
- Store secrets outside of state
Provider Protocol and State Management
The provider implements Terraform's plugin protocol via the schema.Provider interface. Each resource implements standard Terraform lifecycle operations with state synchronization to ensure configuration drift detection.
State synchronization ensures that changes made outside Terraform in the Auth0 Dashboard are detected during plan operations. Drift detection is critical for security sensitive identity resources.
The provider acts as a bridge between Terraform's declarative HCL configuration language and the Auth0 Management API, enabling version controlled, repeatable deployment of authentication infrastructure.
Conclusion
The Auth0 Terraform Provider provides a mature, officially supported path to managing Auth0 tenants as code. It covers 70+ resource types across identity, authorization, security, extensibility and tenant configuration, with ongoing enhancements for session management, federation, directory provisioning and event streaming.
Effective use requires a Machine-to-Machine application with Management API scopes, careful secret management, and awareness of the import cost for existing tenants. For teams already using Terraform or OpenTofu and requiring granular, auditable control over specific Auth0 resources, the provider delivers consistency across environments and a clear audit trail for security reviews.
For teams with bulk management needs or no Terraform workflow, the provider may introduce unnecessary overhead. The choice between Deploy CLI and Terraform Provider should be driven by existing toolchain, resource granularity requirements, and the scale of tenant import effort.
Sources
- https://deepwiki.com/auth0/terraform-provider-auth0
- https://github.com/auth0/terraform-provider-auth0
- https://auth0.com/docs/deploy-monitor/auth0-terraform-provider
- https://oneuptime.com/blog/post/2026-02-23-how-to-configure-auth0-provider-in-terraform/view
- https://github.com/auth0/terraform-provider-auth0/releases