مقدمه
در حالی که Open WebUI نحوه تعامل توسعهدهندگان با مدلهای زبانی بزرگ (LLM) محلی را متحول کرده است، استقرار آن برای یک تیم اغلب یک آسیبپذیری حیاتی را آشکار میکند: فقدان مدیریت هویت قوی. بهطور پیشفرض، بسیاری از پیکربندیها به فایلهای رمز عبور ساده یا دسترسی باز تکیه دارند که برای همکاری در سطح سازمانی ناکافی است. این راهنما جزئیات نحوه سختسازی نمونه Open WebUI شما را با استفاده از Keycloak به عنوان ارائهدهنده هویت (IdP) و LDAP برای همگامسازی دایرکتوری شرح میدهد. این معماری تضمین میکند که هر عضو تیم دارای یک هویت منحصر به فرد، کنترلهای دسترسی دقیق و ورود تکمرحلهای (SSO) روان باشد.
پیشنیازها و معماری
قبل از ورود به تنظیمات، اطمینان حاصل کنید که یک سرور Keycloak (نسخه 21 به بالا) و یک نمونه Open WebUI (استفاده از Docker توصیه میشود) در حال اجرا هستند. این معماری بر استاندارد OpenID Connect (OIDC) تکیه دارد. Keycloak احراز هویت کاربران را مدیریت میکند، در حالی که Open WebUI به عنوان طرف متکی عمل مینماید. شما به موارد زیر نیاز دارید:
1. یک realm در Keycloak که برای سازمان شما ایجاد شده است.
2. یک برنامه کاربردی که در Keycloak ثبت شده و احراز هویت مشتری (Client Authentication) در آن فعال است.
3. اتصال شبکه بین کانتینر Open WebUI و سرور Keycloak.
پیکربندی Keycloak
ابتدا به کنسول مدیریت Keycloak خود بروید. یک مشتری جدید از نوع "OpenID Connect" ایجاد کنید. URL ریشه و URIهای تغییر مسیر معتبر را به گونهای تنظیم کنید که به نصب Open WebUI شما اشاره کنند (برای مثال، `http://your-domain/*`). از نظر حیاتی، "احراز هویت مشتری" و "جریان استاندارد" را فعال کنید.
سپس، تنظیمات "Scope" را پیکربندی کنید. اطمینان حاصل کنید که Scope "User Info" فعال است، زیرا Open WebUI به ادعاهای `email`، `preferred_username` و `name` برای نگاشت صحیح کاربران نیاز دارد. اگر با یک دایرکتوری LDAP همگامسازی میکنید، قبل از ادامه، فدراسیون کاربر را در Keycloak پیکربندی کنید و اطمینان حاصل کنید که نامهای کاربری LDAP به طور تمیز به نامهای کاربری IdP نگاشت میشوند.
متغیرهای محیطی Open WebUI
اینجاست که یکپارچهسازی جان میگیرد. شما باید متغیرهای محیطی خاصی را به کانتینر Docker Open WebUI خود ارسال کنید. این متغیرها به برنامه دستور میدهند که ارائهدهنده هویت را کجا پیدا کند و چگونه توکنها را اعتبارسنجی نماید.
```bash
WEBUI_AUTH=True
WEBUI_SECRET_KEY="change-me-to-a-random-secret"
AUTH_TYPE_CREDENTIALS=True
AUTH_TYPE_OAUTH_OIDC=True
# پیکربندی Keycloak
AUTH_OIDC_PROVIDER_URL=http://your-keycloak-domain/auth/realms/your-realm
AUTH_OIDC_CLIENT_ID=your-client-id
AUTH_OIDC_CLIENT_SECRET=your-client-secret
AUTH_OIDC_SERVER_NAME=http://your-open-webui-domain
AUTH_OIDC_SCOPES=openid email profile
AUTH_OIDC_JWKS_URI=http://your-keycloak-domain/auth/realms/your-realm/protocol/openid-connect/certs
AUTH_OIDC_TOKEN_ENDPOINT=http://your-keycloak-domain/auth/realms/your-realm/protocol/openid-connect/token
AUTH_OIDC_AUTH_ENDPOINT=http://your-keycloak-domain/auth/realms/your-realm/protocol/openid-connect/auth
AUTH_OIDC_USER_INFO_ENDPOINT=http://your-keycloak-domain/auth/realms/your-realm/protocol/openid-connect/userinfo
```
اگر میخواهید ورود پشتیبان را برای کاربران مدیر اجازه دهید، اطمینان حاصل کنید که `AUTH_TYPE_CREDENTIALS` روی `True` تنظیم شده است، یا آن را روی `False` قرار دهید تا فقط OIDC سختگیرانه اعمال شود.
نگاشت کاربران و گروهها
پس از راهاندازی مجدد کانتینرها با این متغیرها، به صفحه ورود Open WebUI خود بروید. باید یک دکمه "ورود با OpenID Connect" را مشاهده کنید. پس از احراز هویت موفق، Keycloak هویت کاربر را برمیگرداند. Open WebUI به طور خودکار یک پروفایل کاربری محلی ایجاد میکند اگر ایمیل یا نام کاربری وجود نداشته باشد، به شرطی که متغیر محیطی `ALLOW_USER_SIGN_UP` آن را به صراحت محدود نکرده باشد.
برای همکاری پیشرفته تیمی، از گروههای Keycloak برای مدیریت دسترسی استفاده کنید. میتوانید Open WebUI را پیکربندی کنید تا فقط به کاربران از گروههای خاص Keycloak اجازه ورود دهد، با تنظیم مناسب پرچمهای `WEBUI_ADMIN_USER` و `WEBUI_USER_USER`، یا با بهرهگیری از همگامسازی عضویت گروه LDAP در خود Keycloak.
نتیجهگیری
با یکپارچهسازی Keycloak و LDAP با Open WebUI، شما یک ابزار شخصی را به یک پلتفرم امن و مقیاسپذیر برای همکاری تیمی تبدیل میکنید. این پیکربندی نه تنها از طریق مدیریت هویت متمرکز امنیت را افزایش میدهد، بلکه مدیریت چرخه عمر کاربران را نیز ساده میسازد. با رشد پذیرش هوش مصنوعی محلی، پیادهسازی استانداردهای احراز هویت مناسب مانند OIDC دیگر اختیاری نیست—بلکه برای حفظ یکپارچگی دادهها و کنترل دسترسی در هر محیط حرفهای ضروری است.