Local AI

تأمين واجهة Open WebUI باستخدام Keycloak و LDAP

مقدمة

في حين أحدثت واجهة Open WebUI ثورة في طريقة تفاعل المطورين مع نماذج اللغة الكبيرة (LLMs) المحلية، فإن نشرها لفريق عمل غالباً ما يكشف عن ثغرة حرجة: عدم وجود إدارة هوية قوية. بشكل افتراضي، تعتمد العديد من الإعدادات على ملفات كلمات مرور بسيطة أو وصول مفتوح، وهو ما لا يكفي للتعاون على مستوى المؤسسات. يوضح هذا الدليل كيفية تعزيز أمان مثيل Open WebUI الخاص بك باستخدام Keycloak كموفر للهوية (IdP) و LDAP لمزامنة الدليل. يضمن هذا الهيكل أن يكون لكل عضو في الفريق هوية فريدة، وتحكم دقيق في الوصول، وتجربة دخول موحد (SSO) سلسة.

المتطلبات المسبقة والبنية المعمارية

قبل الغوص في التكوين، تأكد من وجود خادم Keycloak قيد التشغيل (الإصدار 21 فأعلى) ومثيل لواجهة Open WebUI (يُوصى باستخدام Docker). تعتمد البنية المعمارية على معيار OpenID Connect (OIDC). سيتولى Keycloak مصادقة المستخدمين، بينما تعمل واجهة Open WebUI كطرف معتمد. ستحتاج إلى: 1. مجال Keycloak تم إنشاؤه لمنظمتك. 2. تطبيق عميل مسجل في Keycloak مع تمكين مصادقة العميل. 3. اتصال بالشبكة بين حاوية Open WebUI وخادم Keycloak.

تكوين Keycloak

أولاً، انتقل إلى وحدة تحكم إدارة Keycloak. أنشئ عميلاً جديداً من نوع "OpenID Connect". اضبط عنوان URL الجذر وعناوين URL لإعادة التوجيه الصالحة لتشير إلى تثبيت Open WebUI الخاص بك (على سبيل المثال، `http://your-domain/*`). من الناحية الحرجة، قم بتمكين "مصادقة العميل" و "التدفق القياسي". بعد ذلك، قم بتكوين إعدادات "النطاق" (Scope). تأكد من تمكين نطاق "معلومات المستخدم"، حيث تتطلب 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 خياراً بل أصبح ضرورياً للحفاظ على سلامة البيانات والتحكم في الوصول في أي بيئة مهنية.
Share: