Единый вход
Libre WebUI поддерживает вход OAuth через GitHub и Hugging Face, а также любого поставщика OpenID Connect через универсальную интеграцию OIDC. Пользователи OAuth всё равно хранятся как локальные пользователи Libre WebUI и по умолчанию получают роль user (OIDC может дополнительно сопоставлять роли и группы из claims).
GitHub OAuth
Создайте приложение OAuth в GitHub Developer Settings.
Локальный callback URL:
http://localhost:3001/api/auth/oauth/github/callback
Продакшен callback URL:
https://your-domain.example/api/auth/oauth/github/callback
Файл .env бэкенда:
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
GITHUB_CALLBACK_URL=https://your-domain.example/api/auth/oauth/github/callback
GitHub OAuth запрашивает область user:email. Имена новых пользователей получают префикс gh_.
Hugging Face OAuth
Создайте приложение OAuth в настройках Hugging Face.
Локальный callback URL:
http://localhost:3001/api/auth/oauth/huggingface/callback
Продакшен callback URL:
https://your-domain.example/api/auth/oauth/huggingface/callback
Файл .env бэкенда:
HUGGINGFACE_CLIENT_ID=...
HUGGINGFACE_CLIENT_SECRET=...
HUGGINGFACE_CALLBACK_URL=https://your-domain.example/api/auth/oauth/huggingface/callback
Имена новых пользователей получают префикс hf_.
Универсальный OIDC
Подходит любой поставщик с документом обнаружения OpenID Connect: Keycloak, Authentik, Authelia, Okta, Entra ID, Google Workspace и другие. Поток использует PKCE (S256), состояние CSRF и nonce, проверяемый внутри ID-токена с проверенной подписью; ключи подписи берутся из JWKS поставщика.
Зарегистрируйте конфиденциального клиента с таким callback URL:
https://your-domain.example/api/auth/oauth/oidc/callback
Файл .env бэкенда:
OIDC_ISSUER_URL=https://id.example.com/realms/main
OIDC_CLIENT_ID=libre-webui
OIDC_CLIENT_SECRET=...
OIDC_DISPLAY_NAME=Example SSO
Необязательные политики:
# Require a verified email in one of these domains
OIDC_ALLOWED_EMAIL_DOMAINS=example.com,example.org
# Grant/remove the admin role based on a group claim on every login
OIDC_GROUP_CLAIM=groups
OIDC_ADMIN_GROUPS=libre-admins
# Reconcile Libre group memberships with the group claim on every login
OIDC_SYNC_GROUPS=true
Идентичности связываются по стабильному claim sub, поэтому переименованная учётная запись поставщика сохраняет аккаунт Libre. Новые пользователи получают префикс oidc_, если регистрация разрешена. Адрес электронной почты, уже принадлежащий несвязанному локальному аккаунту, отклоняется, а не объединяется молча. При OIDC_SYNC_GROUPS=true членство пользователя OIDC во всех группах Libre, название которых совпадает со значением claim, управляется claims — сначала создайте соответствующие группы на вкладке «Управление пользователями» в Settings.
Общие настройки
Задайте публичный URL бэкенда:
BASE_URL=https://your-domain.example
CORS_ORIGIN=https://your-domain.example
Если callback URL не заданы явно, Libre WebUI строит значения по умолчанию из BASE_URL.
Ограничения
Libre WebUI пока не предоставляет SAML или provisioning SCIM. Списки разрешённых доменов и сопоставление ролей/групп доступны только универсальному OIDC; пользователи GitHub и Hugging Face всегда создаются с ролью user и управляются через интерфейс администратора.
Устранение неполадок
Кнопка OAuth ничего не делает
Убедитесь, что ID клиента и секрет заданы, а бэкенд перезапущен.
Поставщик отклоняет callback
Callback URL в панели поставщика должен точно совпадать с URL Libre WebUI.
Пользователь получает обычные права
Пользователи OAuth по умолчанию создаются как user. При необходимости повысьте роль в интерфейсе администратора.