✨ 管理界面的 SSO
UI 的 SSO
步骤 1:设置密钥的上限
控制用户对于每个密钥可使用的 max_budget
、budget_duration
或任何 key/generate
参数的上限。
litellm_settings:
upperbound_key_generate_params:
max_budget: 100 # Optional[float], optional): upperbound of $100, for all /key/generate requests
budget_duration: "10d" # Optional[str], optional): upperbound of 10 days for budget_duration values
duration: "30d" # Optional[str], optional): upperbound of 30 days for all /key/generate requests
max_parallel_requests: 1000 # (Optional[int], optional): Max number of requests that can be made in parallel. Defaults to None.
tpm_limit: 1000 #(Optional[int], optional): Tpm limit. Defaults to None.
rpm_limit: 1000 #(Optional[int], optional): Rpm limit. Defaults to None.
预期行为
- 发送一个带有
max_budget=200
的/key/generate
请求 - 由于 100 是上限,密钥将以
max_budget=100
创建
步骤 2:设置 Oauth 客户端
- Okta SSO
- Google SSO
- Microsoft SSO
- 通用 SSO 提供商
- 将 Okta 凭据添加到你的 .env 文件
GENERIC_CLIENT_ID = "<your-okta-client-id>"
GENERIC_CLIENT_SECRET = "<your-okta-client-secret>"
GENERIC_AUTHORIZATION_ENDPOINT = "<your-okta-domain>/authorize" # https://dev-2kqkcd6lx6kdkuzt.us.auth0.com/authorize
GENERIC_TOKEN_ENDPOINT = "<your-okta-domain>/token" # https://dev-2kqkcd6lx6kdkuzt.us.auth0.com/oauth/token
GENERIC_USERINFO_ENDPOINT = "<your-okta-domain>/userinfo" # https://dev-2kqkcd6lx6kdkuzt.us.auth0.com/userinfo
GENERIC_CLIENT_STATE = "random-string" # [OPTIONAL] REQUIRED BY OKTA, if not set random state value is generated
你可以在 <YOUR-OKTA-DOMAIN>/.well-known/openid-configuration
获取你的特定域的 auth/token/userinfo 端点
- 在 Okta 上将代理 URL 添加为 callback_url
在 Okta 上,将 'callback_url' 添加为 <proxy_base_url>/sso/callback
- 在 https://console.cloud.google.com/ 创建一个新的 Oauth 2.0 客户端
你的代理上所需的 .env 变量
# for Google SSO Login
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
- 在 https://console.cloud.google.com/ 设置你的 Oauth 2.0 客户端的重定向 URL
- 设置一个重定向 URL =
<your proxy base url>/sso/callback
https://litellm-production-7002.up.railway.app/sso/callback
- 设置一个重定向 URL =
- 在 https://portal.azure.com/ 创建一个新的应用注册
- 为你的应用注册创建一个客户端密钥
你的代理上所需的 .env 变量
MICROSOFT_CLIENT_ID="84583a4d-"
MICROSOFT_CLIENT_SECRET="nbk8Q~"
MICROSOFT_TENANT="5a39737
- 在 https://portal.azure.com/ 设置你的应用注册的重定向 URI
- 设置一个重定向 URL =
<your proxy base url>/sso/callback
http://localhost:4000/sso/callback
- 设置一个重定向 URL =
一个通用 OAuth 客户端,几乎无需代码即可快速创建对任何 OAuth 提供商的支持
你的代理上所需的 .env 变量
GENERIC_CLIENT_ID = "******"
GENERIC_CLIENT_SECRET = "G*******"
GENERIC_AUTHORIZATION_ENDPOINT = "http://localhost:9090/auth"
GENERIC_TOKEN_ENDPOINT = "http://localhost:9090/token"
GENERIC_USERINFO_ENDPOINT = "http://localhost:9090/me"
可选的 .env 变量 以下变量可用于在与通用 OAuth 提供商交互时自定义属性名称。我们将从 SSO 提供商的结果中读取这些属性
GENERIC_USER_ID_ATTRIBUTE = "given_name"
GENERIC_USER_EMAIL_ATTRIBUTE = "family_name"
GENERIC_USER_DISPLAY_NAME_ATTRIBUTE = "display_name"
GENERIC_USER_FIRST_NAME_ATTRIBUTE = "first_name"
GENERIC_USER_LAST_NAME_ATTRIBUTE = "last_name"
GENERIC_USER_ROLE_ATTRIBUTE = "given_role"
GENERIC_USER_PROVIDER_ATTRIBUTE = "provider"
GENERIC_CLIENT_STATE = "some-state" # if the provider needs a state parameter
GENERIC_INCLUDE_CLIENT_ID = "false" # some providers enforce that the client_id is not in the body
GENERIC_SCOPE = "openid profile email" # default scope openid is sometimes not enough to retrieve basic user info like first_name and last_name located in profile scope
- 如果你的提供商要求,请设置重定向 URI
- 设置一个重定向 URL =
<your proxy base url>/sso/callback
http://localhost:4000/sso/callback
- 设置一个重定向 URL =
默认登录、注销 URL
一些 SSO 提供商要求为登录和注销设置特定的重定向 URL。你可以输入以下值。
- 登录:
<your-proxy-base-url>/sso/key/generate
- 注销:
<your-proxy-base-url>
这是在代理上设置注销 URL 的环境变量
PROXY_LOGOUT_URL="https://www.google.com"
步骤 3. 在你的 .env 文件中设置 PROXY_BASE_URL
在你的 .env 文件中设置此项(以便代理可以设置正确的重定向 URL)
PROXY_BASE_URL=https://litellm-api.up.railway.app
步骤 4. 测试流程

使用 SSO 限制电子邮件子域名
如果你正在使用 SSO 并且只想允许具有特定子域名(例如 @berri.ai 电子邮件账户)的用户访问 UI,请执行此操作
export ALLOWED_EMAIL_DOMAINS="berri.ai"
这将检查我们从 SSO 收到的用户电子邮件是否包含此域,然后才允许访问。
设置代理管理员
在启用 SSO 时设置代理管理员。启用 SSO 后,用户的 user_id
从 SSO 提供商处检索。要设置代理管理员,你需要从 UI 复制 user_id
并将其在你的 .env
文件中设置为 PROXY_ADMIN_ID
。
步骤 1:从 UI 复制你的 ID
步骤 2:在你的 .env 文件中将其设置为 PROXY_ADMIN_ID
export PROXY_ADMIN_ID="116544810872468347480"
步骤 3:查看所有代理密钥
如果你看不到所有密钥,这可能是由于缓存的 token 造成的。只需重新登录即可解决。
在管理 UI 上禁用 Default Team
如果你想在管理 UI 上隐藏 Default Team,请使用此选项
将应用以下逻辑
- 如果分配了团队,则不显示
Default Team
- 如果未分配团队,则应显示
Default Team
在你的 litellm config.yaml 中设置 default_team_disabled: true
general_settings:
master_key: sk-1234
default_team_disabled: true # OR you can set env var PROXY_DEFAULT_TEAM_DISABLED="true"
在 SSO 开启时使用用户名、密码
如果在 SSO 开启时需要通过用户名/密码访问 UI,请导航至 /fallback/login
。此路由将允许你使用用户名/密码凭据登录。
限制 UI 访问
你可以将 UI 访问限制为仅管理员——包括你(proxy_admin)和你授予只读访问权限以查看全局支出的用户(proxy_admin_viewer)。
步骤 1. 设置“admin_only”访问
general_settings:
ui_access_mode: "admin_only"
步骤 2. 邀请只读用户
自定义管理 UI 品牌
在 LiteLLM 管理 UI 上使用你公司的自定义品牌。我们允许你:
- 自定义 UI Logo
- 自定义 UI 配色方案
设置自定义 Logo
我们允许你传递本地图片或图片的 http/https URL
在你的 env 文件中设置 UI_LOGO_PATH
。我们推荐使用托管图片,它更容易设置、配置和调试
设置托管图片的示例
UI_LOGO_PATH="https://litellm-logo-aws-marketplace.s3.us-west-2.amazonaws.com/berriai-logo-github.png"
设置本地图片(在你的容器上)的示例
UI_LOGO_PATH="ui_images/logo.jpg"
设置自定义颜色主题
- 导航至 /enterprise/enterprise_ui
- 在
enterprise_ui
目录内,将_enterprise_colors.json
重命名为enterprise_colors.json
- 在
enterprise_colors.json
中设置你公司的自定义配色方案。enterprise_colors.json
的示例内容。将你的颜色设置为以下颜色之一: https://www.tremor.so/docs/layout/color-palette#default-colors
{
"brand": {
"DEFAULT": "teal",
"faint": "teal",
"muted": "teal",
"subtle": "teal",
"emphasis": "teal",
"inverted": "teal"
}
}
- 部署 LiteLLM 代理服务器