From 5857b02bfc9a0c28d67883521436eea16170abcb Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Fri, 16 Feb 2024 14:40:27 -0800 Subject: [PATCH 1/2] (feat) generic sso, set generic_user_id_attribute_name --- litellm/proxy/proxy_server.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index c563396387..b307852b4e 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -4826,6 +4826,25 @@ async def auth_callback(request: Request): # User is Authe'd in - generate key for the UI to access Proxy user_email = getattr(result, "email", None) user_id = getattr(result, "id", None) + + # generic client id + if generic_client_id is not None: + generic_user_id_attribute_name = os.getenv("GENERIC_USER_ID_ATTRIBUTE", "email") + generic_user_email_attribute_name = os.getenv( + "GENERIC_USER_EMAIL_ATTRIBUTE", "email" + ) + generic_user_role_attribute_name = os.getenv( + "GENERIC_USER_ROLE_ATTRIBUTE", "role" + ) + + verbose_proxy_logger.debug( + f" generic_user_id_attribute_name: {generic_user_id_attribute_name}\n generic_user_email_attribute_name: {generic_user_email_attribute_name}\n generic_user_role_attribute_name: {generic_user_role_attribute_name}" + ) + + user_id = getattr(result, generic_user_id_attribute_name, None) + user_email = getattr(result, generic_user_email_attribute_name, None) + user_role = getattr(result, generic_user_role_attribute_name, None) + if user_id is None: user_id = getattr(result, "first_name", "") + getattr(result, "last_name", "") response = await generate_key_helper_fn( From 4ab697c6c20495db18282b8b68f044d43ba59785 Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Fri, 16 Feb 2024 14:47:15 -0800 Subject: [PATCH 2/2] (Docs) generic sso provider --- docs/my-website/docs/proxy/ui.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/my-website/docs/proxy/ui.md b/docs/my-website/docs/proxy/ui.md index c98c85f2d5..13f975cd19 100644 --- a/docs/my-website/docs/proxy/ui.md +++ b/docs/my-website/docs/proxy/ui.md @@ -126,6 +126,15 @@ GENERIC_TOKEN_ENDPOINT = "http://localhost:9090/token" GENERIC_USERINFO_ENDPOINT = "http://localhost:9090/me" ``` +**Optional .env variables** +The following can be used to customize attribute names when interacting with the generic OAuth provider. We will read these attributes from the SSO Provider result + +```shell +GENERIC_USER_ID_ATTRIBUTE = "given_name" +GENERIC_USER_EMAIL_ATTRIBUTE = "family_name" +GENERIC_USER_ROLE_ATTRIBUTE = "given_role" +``` + - Set Redirect URI, if your provider requires it - Set a redirect url = `/sso/callback` ```shell