メインコンテンツまでスキップ

シングルサインオン

Libre WebUI は GitHub と Hugging Face の OAuth ログインに加え、汎用 OIDC 統合を通じて任意の OpenID Connect プロバイダーに対応します。OAuth ユーザーも Libre WebUI のローカルユーザーとして保存され、既定では user ロールが付与されます(OIDC では、クレームからロールとグループを任意でマッピングできます)。

GitHub OAuth

GitHub Developer Settings で OAuth アプリを作成します。

ローカルのコールバック URL:

http://localhost:3001/api/auth/oauth/github/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

Hugging Face の設定で OAuth アプリを作成します。

ローカルのコールバック URL:

http://localhost:3001/api/auth/oauth/huggingface/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 state、および署名検証済み ID トークン内で検証される nonce を使用します。 署名鍵はプロバイダーの JWKS から取得します。

次のコールバック URL で confidential client を登録します。

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

ID は安定した sub クレームに紐付けられるため、プロバイダー側のアカウント名が変わっても Libre のアカウントは維持されます。登録が許可されている場合、新しいユーザー名には oidc_ プレフィックスが付きます。リンクされていないローカルアカウントがすでに所有するメールアドレスは、暗黙に統合せず拒否されます。 OIDC_SYNC_GROUPS=true の場合、OIDC ユーザーについて、名前がクレーム値と一致するすべての Libre グループのメンバーシップがクレームによって管理されます。先に設定のユーザー管理タブで同名のグループを作成してください。

共通設定

公開バックエンド URL を設定します。

BASE_URL=https://your-domain.example
CORS_ORIGIN=https://your-domain.example

コールバック URL を明示的に設定しない場合、Libre WebUI は BASE_URL から既定値を生成します。

制限

Libre WebUI は現在、SAML または SCIM プロビジョニングを提供していません。ドメイン許可リストとロール/グループのマッピングを利用できるのは汎用 OIDC プロバイダーだけです。GitHub と Hugging Face のユーザーは常に user ロールで作成され、管理 UI から管理します。

トラブルシューティング

OAuth ボタンを押しても反応しない

プロバイダーのクライアント ID とシークレットが設定され、バックエンドが再起動されていることを確認してください。

プロバイダーがコールバックを拒否する

プロバイダーのダッシュボードに登録したコールバック URL は、Libre WebUI が使用する URL と完全に一致する必要があります。

ユーザーに通常の権限しか付与されない

OAuth ユーザーは既定で user として作成されます。必要に応じて管理 UI から昇格してください。

関連ドキュメント