{"record":{"id":"962c27abd8da0f0e","repo":"BerriAI/litellm","slug":"saml-sso-is-not-configured-set-saml-idp-metadata","errorCode":null,"errorMessage":"SAML SSO is not configured. Set SAML_IDP_METADATA_URL or SAML_IDP_METADATA_XML.","messagePattern":"SAML SSO is not configured\\. Set SAML_IDP_METADATA_URL or SAML_IDP_METADATA_XML\\.","errorType":"http","errorClass":"HTTPException","httpStatus":501,"severity":"error","filePath":"litellm/proxy/management_endpoints/sso/saml_sso.py","lineNumber":154,"sourceCode":"    @staticmethod\n    def _acs_url(request: Request) -> str:\n        return SAMLAuthHandler._base_url(request) + SAML_CALLBACK_ROUTE\n\n    @staticmethod\n    def _metadata_url(request: Request) -> str:\n        return SAMLAuthHandler._base_url(request) + SAML_METADATA_ROUTE\n\n    @staticmethod\n    def _sp_entity_id(request: Request) -> str:\n        return SAMLAuthHandler._env(\"SAML_SP_ENTITY_ID\") or SAMLAuthHandler._metadata_url(request)\n\n    @staticmethod\n    async def _load_idp_settings(cache: DualCache) -> dict[str, object]:\n        metadata_url: Final = SAMLAuthHandler._env(\"SAML_IDP_METADATA_URL\")\n        metadata_xml: Final = SAMLAuthHandler._env(\"SAML_IDP_METADATA_XML\")\n        source: Final = metadata_url or metadata_xml\n        if source is None:\n            raise HTTPException(\n                status_code=status.HTTP_501_NOT_IMPLEMENTED,\n                detail=\"SAML SSO is not configured. Set SAML_IDP_METADATA_URL or SAML_IDP_METADATA_XML.\",\n            )\n\n        cache_key: Final = f\"{_SAML_IDP_SETTINGS_CACHE_PREFIX}:{hashlib.sha256(source.encode()).hexdigest()}\"\n        cached: Final = cache.get_cache(key=cache_key)\n        if isinstance(cached, dict):\n            return cast(dict[str, object], cached)  # cast-ok: untyped python3-saml\n\n        if metadata_url is not None:\n            parsed = await asyncio.to_thread(\n                OneLogin_Saml2_IdPMetadataParser.parse_remote,\n                metadata_url,\n                validate_cert=SAMLAuthHandler._bool_env(\"SAML_IDP_METADATA_VALIDATE_CERT\", True),\n                timeout=_SAML_METADATA_FETCH_TIMEOUT_SECONDS,\n            )\n        else:\n            parsed = OneLogin_Saml2_IdPMetadataParser.parse(cast(str, metadata_xml))  # cast-ok: untyped python3-saml","sourceCodeStart":136,"sourceCodeEnd":172,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/management_endpoints/sso/saml_sso.py#L136-L172","documentation":"SAML login sentinel: _load_idp_settings finds neither SAML_IDP_METADATA_URL nor SAML_IDP_METADATA_XML in the environment, so the IdP cannot be configured and any SAML flow fails immediately with this error. At-fault condition is missing SSO environment configuration.","triggerScenarios":"Thrown at litellm/proxy/management_endpoints/sso/saml_sso.py:154 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set SAML_IDP_METADATA_URL or SAML_IDP_METADATA_XML in the environment."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}