Skip to main content

Azure Redis Entra ID Authentication

Connect LiteLLM's Redis cache to Azure Cache for Redis or Azure Managed Redis using Microsoft Entra ID (formerly Azure AD), so the proxy authenticates as a managed identity or service principal and no access key exists in your config

Why use it​

With Entra ID authentication the client presents a short-lived Entra access token in place of a password, and Azure validates it against the cache's access policy assignments on every connection. Access is revoked by removing a policy assignment instead of rotating a key and redeploying every replica, and every connection is attributable to an identity in your tenant

LiteLLM builds the Entra credential once and keeps it alive for the life of the proxy, so the Azure SDK's internal token cache and silent refresh apply. Each new Redis connection authenticates with a fresh token, which avoids the failure mode where pooled connections start failing once the initial token expires after about an hour

Requirements​

You need azure-identity installed, which ships with litellm[proxy] and the Docker image. Entra ID authentication must be enabled on the cache, and the identity the proxy runs as needs a data access policy on it; Data Contributor is enough for the response cache. Azure serves these caches over TLS only, so set ssl: true and use port 6380 for Azure Cache for Redis or port 10000 for Azure Managed Redis

Configuration​

Set azure_redis_ad_token: "true" and drop the password

litellm_settings:
cache: true
cache_params:
type: redis
host: my-cache.redis.cache.windows.net
port: 6380
ssl: true
azure_redis_ad_token: "true"

Azure Redis instances usually expect the identity's object (principal) ID as the Redis username during AUTH. Set the REDIS_USERNAME environment variable to that object ID; when it is unset LiteLLM sends the token alone, which ACL-configured instances may reject

How credentials resolve​

If azure_client_id, azure_tenant_id, and azure_client_secret are all set, in cache_params or through the standard AZURE_CLIENT_ID, AZURE_TENANT_ID, and AZURE_CLIENT_SECRET environment variables, LiteLLM authenticates as that service principal. If only azure_client_id is set, it authenticates as that user-assigned managed identity. Otherwise it falls back to DefaultAzureCredential, which covers a system-assigned managed identity, the Azure CLI, and the other standard azure-identity mechanisms

Settings​

SettingRequiredDescription
azure_redis_ad_tokenyesThe string "true" turns on Entra ID authentication. Env equivalent: REDIS_AZURE_AD_TOKEN
azure_client_idnoClient ID of a user-assigned managed identity or service principal. Falls back to AZURE_CLIENT_ID
azure_tenant_idnoTenant ID, needed together with a client secret. Falls back to AZURE_TENANT_ID
azure_client_secretnoService principal secret. Falls back to AZURE_CLIENT_SECRET

REDIS_USERNAME is environment-only and should hold the object ID of the identity when your cache requires a username on AUTH

Verify​

Ping the cache through the proxy. A healthy response means a token was issued, Azure accepted it, and a write round-tripped

curl -s -X GET 'http://localhost:4000/cache/ping' \
-H "Authorization: Bearer $LITELLM_API_KEY"
{
"status": "healthy",
"cache_type": "redis",
"ping_response": true,
"set_cache_response": "success"
}

Notes​

Sync Redis clients authenticate inside a custom connect function; async clients wrap the same live credential in a redis-py credential provider that is consulted on every new connection. Both paths share one credential object, so token renewal happens inside the Azure SDK with no restart

If you configure GCP IAM (gcp_service_account) alongside Entra ID, the GCP path wins and LiteLLM logs a warning. If you configure AWS ElastiCache IAM (aws_iam_auth) alongside Entra ID, the Entra path wins, also with a warning. Configure exactly one. Supplying your own credential_provider overrides all of this

Troubleshooting​

azure-identity is required for Azure AD Redis authentication means the package is missing from a custom install; it is already part of litellm[proxy]

Azure AD authentication failed for Redis or WRONGPASS invalid username-password pair means the token was issued but the cache rejected it. The usual causes are Entra ID authentication not being enabled on the cache, the identity missing a data access policy assignment, or REDIS_USERNAME not matching the identity's object ID

An error from azure-identity itself, such as DefaultAzureCredential failed to retrieve a token, means no credential source was found. Check that the proxy actually runs with the managed identity you assigned, or that the AZURE_* variables are set

See also​

Everything else about the Redis cache, including cluster topology, namespaces and TLS, lives on Redis and Valkey. For AWS, see AWS ElastiCache IAM Authentication; for GCP, see GCP Memorystore IAM Authentication

🚅
LiteLLM Enterprise
SSO/SAML, audit logs, spend tracking, multi-team management, and guardrails — built for production.
Learn more →