Zum Hauptinhalt springen

Event Hook fĂĽr SSO Login (Benutzerdefinierter Handler)

Verwenden Sie dies, wenn Sie Ihren eigenen Code ausführen möchten, nachdem sich ein Benutzer über SSO bei der LiteLLM-Benutzeroberfläche angemeldet hat

Wie es funktioniert​

  • Benutzer landet auf der Admin-Benutzeroberfläche
  • LiteLLM leitet den Benutzer an Ihren SSO-Anbieter weiter
  • Ihr SSO-Anbieter leitet den Benutzer zurĂĽck zu LiteLLM
  • LiteLLM hat Benutzerinformationen von Ihrem IDP abgerufen
  • Ihr benutzerdefinierter SSO-Handler wird aufgerufen und gibt ein Objekt vom Typ SSOUserDefinedValues zurĂĽck
  • Benutzer bei der Benutzeroberfläche angemeldet

Verwendung​

1. Erstellen Sie eine benutzerdefinierte SSO-Handler-Datei.​

Stellen Sie sicher, dass der Antworttyp dem SSOUserDefinedValues Pydantic-Objekt entspricht. Dies wird zum Protokollieren des Benutzers bei der Admin-Benutzeroberfläche verwendet

from fastapi import Request
from fastapi_sso.sso.base import OpenID

from litellm.proxy._types import LitellmUserRoles, SSOUserDefinedValues
from litellm.proxy.management_endpoints.internal_user_endpoints import (
new_user,
user_info,
)
from litellm.proxy.management_endpoints.team_endpoints import add_new_member


async def custom_sso_handler(userIDPInfo: OpenID) -> SSOUserDefinedValues:
try:
print("inside custom sso handler") # noqa
print(f"userIDPInfo: {userIDPInfo}") # noqa

if userIDPInfo.id is None:
raise ValueError(
f"No ID found for user. userIDPInfo.id is None {userIDPInfo}"
)


#################################################
# Run you custom code / logic here
# check if user exists in litellm proxy DB
_user_info = await user_info(user_id=userIDPInfo.id)
print("_user_info from litellm DB ", _user_info) # noqa
#################################################

return SSOUserDefinedValues(
models=[], # models user has access to
user_id=userIDPInfo.id, # user id to use in the LiteLLM DB
user_email=userIDPInfo.email, # user email to use in the LiteLLM DB
user_role=LitellmUserRoles.INTERNAL_USER.value, # role to use for the user
max_budget=0.01, # Max budget for this UI login Session
budget_duration="1d", # Duration of the budget for this UI login Session, 1d, 2d, 30d ...
)
except Exception as e:
raise Exception("Failed custom auth")

2. Geben Sie den Dateipfad an (relativ zur config.yaml)​

Geben Sie den Dateipfad zur config.yaml an.

z. B. wenn sich beide im selben Verzeichnis befinden – ./config.yaml und ./custom_sso.py, sieht das so aus

model_list: 
- model_name: "openai-model"
litellm_params:
model: "gpt-3.5-turbo"

litellm_settings:
drop_params: True
set_verbose: True

general_settings:
custom_sso: custom_sso.custom_sso_handler

3. Starten Sie den Proxy​

$ litellm --config /path/to/config.yaml