BerriAI/litellm · error · ValueError

Azure OIDC provider returned None token

Error message

Azure OIDC provider returned None token

What it means

Azure workload-identity OIDC failure: get_azure_ad_token_provider returned a None token, so the caller has no federated credential to exchange. Indicates the Azure AD workload identity setup (FederatedTokenFile or token provider) is misconfigured.

Source

Thrown at litellm/secret_managers/main.py:283

            )
            if response.status_code == 200:
                oidc_token = response.json().get("value", None)
                oidc_cache.set_cache(key=secret_name, value=oidc_token, ttl=300 - 5)
                return oidc_token
            else:
                raise ValueError("Github OIDC provider failed")
        elif oidc_provider == "azure":
            # https://azure.github.io/azure-workload-identity/docs/quick-start.html
            azure_federated_token_file: Final = os.getenv("AZURE_FEDERATED_TOKEN_FILE")
            if azure_federated_token_file is None:
                verbose_logger.warning(
                    "AZURE_FEDERATED_TOKEN_FILE not found in environment will use Azure AD token provider"
                )
                azure_token_provider: Final = get_azure_ad_token_provider(azure_scope=oidc_aud)
                try:
                    oidc_token = azure_token_provider()
                    if oidc_token is None:
                        raise ValueError("Azure OIDC provider returned None token")
                    return oidc_token
                except Exception as e:
                    error_msg: Final = f"Azure OIDC provider failed: {e}"
                    verbose_logger.error(error_msg)
                    raise ValueError(error_msg)
            with open(azure_federated_token_file, "r") as f:
                oidc_token = f.read()
                return oidc_token
        elif oidc_provider == "file":
            # Load token from a file within an allowed credential directory.
            safe_path: Final = _resolve_oidc_file_path(oidc_aud)
            with open(safe_path, "r") as f:
                oidc_token = f.read()
                return oidc_token
        elif oidc_provider == "env":
            # Load token directly from an environment variable
            oidc_token = os.getenv(oidc_aud)
            if oidc_token is None:

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Ensure the Azure managed identity / federated credential is configured so a token is returned.
  2. Check Azure identity configuration and retry; a None token means no identity was available.
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at litellm/secret_managers/main.py:283 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18). Data as JSON: /api/errors/d7cdb40bf5dc5cd4. Report an issue: GitHub.