From 4b98a6f21a2d1612b971f97d2790aa35480ccb2b Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Mon, 12 Jan 2026 18:38:36 -0800 Subject: [PATCH] add MSFT SSO constants --- litellm/constants.py | 17 +++++++++++++++++ litellm/proxy/management_endpoints/ui_sso.py | 19 +++++++++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/litellm/constants.py b/litellm/constants.py index e24186d567e..4ea0be247b3 100644 --- a/litellm/constants.py +++ b/litellm/constants.py @@ -1285,3 +1285,20 @@ COROUTINE_CHECKER_MAX_SIZE_IN_MEMORY = int( ########################### RAG Text Splitter Constants ########################### DEFAULT_CHUNK_SIZE = int(os.getenv("DEFAULT_CHUNK_SIZE", 1000)) DEFAULT_CHUNK_OVERLAP = int(os.getenv("DEFAULT_CHUNK_OVERLAP", 200)) + +########################### Microsoft SSO Constants ########################### +MICROSOFT_USER_EMAIL_ATTRIBUTE = str( + os.getenv("MICROSOFT_USER_EMAIL_ATTRIBUTE", "userPrincipalName") +) +MICROSOFT_USER_DISPLAY_NAME_ATTRIBUTE = str( + os.getenv("MICROSOFT_USER_DISPLAY_NAME_ATTRIBUTE", "displayName") +) +MICROSOFT_USER_ID_ATTRIBUTE = str( + os.getenv("MICROSOFT_USER_ID_ATTRIBUTE", "id") +) +MICROSOFT_USER_FIRST_NAME_ATTRIBUTE = str( + os.getenv("MICROSOFT_USER_FIRST_NAME_ATTRIBUTE", "givenName") +) +MICROSOFT_USER_LAST_NAME_ATTRIBUTE = str( + os.getenv("MICROSOFT_USER_LAST_NAME_ATTRIBUTE", "surname") +) diff --git a/litellm/proxy/management_endpoints/ui_sso.py b/litellm/proxy/management_endpoints/ui_sso.py index 5b3ebbf1c27..3075792f9f2 100644 --- a/litellm/proxy/management_endpoints/ui_sso.py +++ b/litellm/proxy/management_endpoints/ui_sso.py @@ -23,7 +23,14 @@ import litellm from litellm._logging import verbose_proxy_logger from litellm._uuid import uuid from litellm.caching import DualCache -from litellm.constants import MAX_SPENDLOG_ROWS_TO_QUERY +from litellm.constants import ( + MAX_SPENDLOG_ROWS_TO_QUERY, + MICROSOFT_USER_DISPLAY_NAME_ATTRIBUTE, + MICROSOFT_USER_EMAIL_ATTRIBUTE, + MICROSOFT_USER_FIRST_NAME_ATTRIBUTE, + MICROSOFT_USER_ID_ATTRIBUTE, + MICROSOFT_USER_LAST_NAME_ATTRIBUTE, +) from litellm.litellm_core_utils.dot_notation_indexing import get_nested_value from litellm.llms.custom_httpx.http_handler import ( AsyncHTTPHandler, @@ -2358,12 +2365,12 @@ class MicrosoftSSOHandler: response = response or {} verbose_proxy_logger.debug(f"Microsoft SSO Callback Response: {response}") openid_response = CustomOpenID( - email=response.get("userPrincipalName") or response.get("mail"), - display_name=response.get("displayName"), + email=response.get(MICROSOFT_USER_EMAIL_ATTRIBUTE) or response.get("mail"), + display_name=response.get(MICROSOFT_USER_DISPLAY_NAME_ATTRIBUTE), provider="microsoft", - id=response.get("id"), - first_name=response.get("givenName"), - last_name=response.get("surname"), + id=response.get(MICROSOFT_USER_ID_ATTRIBUTE), + first_name=response.get(MICROSOFT_USER_FIRST_NAME_ATTRIBUTE), + last_name=response.get(MICROSOFT_USER_LAST_NAME_ATTRIBUTE), team_ids=team_ids, user_role=user_role, )