يمكن استخدام خادم HTTP لمصادقة مستخدمي ClickHouse. ولا يمكن استخدام مصادقة HTTP إلا كمُصادِق خارجي للمستخدمين الحاليين، والمُعرَّفين في users.xml أو في مسارات التحكم بالوصول المحلية. حاليًا، لا يتم دعم سوى مخطط مصادقة Basic باستخدام طريقة GET.
تعريف خادم مصادقة HTTP
لتعريف خادم مصادقة HTTP، يجب إضافة القسم http_authentication_servers إلى ملف config.xml.
مثال
<clickhouse>
<!- ... -->
<http_authentication_servers>
<basic_auth_server>
<uri>http://localhost:8000/auth</uri>
<connection_timeout_ms>1000</connection_timeout_ms>
<receive_timeout_ms>1000</receive_timeout_ms>
<send_timeout_ms>1000</send_timeout_ms>
<max_tries>3</max_tries>
<retry_initial_backoff_ms>50</retry_initial_backoff_ms>
<retry_max_backoff_ms>1000</retry_max_backoff_ms>
<forward_headers>
<name>Custom-Auth-Header-1</name>
<name>Custom-Auth-Header-2</name>
</forward_headers>
</basic_auth_server>
</http_authentication_servers>
</clickhouse>لاحظ أنه يمكنك تعريف عدة خوادم HTTP داخل القسم http_authentication_servers باستخدام أسماء مختلفة.
المعلمات
uri- عنوان URI لإرسال طلب المصادقة
المهل الزمنية بالمللي ثانية على المقبس المستخدم للتواصل مع الخادم:
connection_timeout_ms- القيمة الافتراضية: 1000 مللي ثانية.receive_timeout_ms- القيمة الافتراضية: 1000 مللي ثانية.send_timeout_ms- القيمة الافتراضية: 1000 مللي ثانية.
معلمات إعادة المحاولة:
max_tries- الحد الأقصى لعدد المحاولات لإرسال طلب مصادقة. القيمة الافتراضية: 3retry_initial_backoff_ms- الفاصل الزمني الأولي للتراجع عند إعادة المحاولة. القيمة الافتراضية: 50 مللي ثانيةretry_max_backoff_ms- الحد الأقصى للفاصل الزمني للتراجع. القيمة الافتراضية: 1000 مللي ثانية
الرؤوس المُمرَّرة:
يحدّد هذا الجزء الرؤوس التي سيتم تمريرها من رؤوس طلب العميل إلى خدمة المصادقة الخارجية عبر HTTP. لاحظ أن الرؤوس ستُطابَق مع الرؤوس المعرّفة في الإعدادات بطريقة غير حساسة لحالة الأحرف، لكن سيتم تمريرها كما هي، أي دون تعديل.
تمكين مصادقة HTTP في users.xml
لتمكين مصادقة HTTP لهذا المستخدم، حدِّد قسم http_authentication بدلًا من password أو أي أقسام مشابهة في تعريف المستخدم.
المعلمات:
server- اسم خادم مصادقة HTTP المُهيّأ في ملفconfig.xmlالرئيسي كما سبق توضيحه.scheme- مخطط مصادقة HTTP. لا يُدعَم حاليًا إلاBasic. القيمة الافتراضية: Basic
مثال (يوضع في users.xml):
<clickhouse>
<!- ... -->
<my_user>
<!- ... -->
<http_authentication>
<server>basic_server</server>
<scheme>basic</scheme>
</http_authentication>
</test_user_2>
</clickhouse>تمكين مصادقة HTTP باستخدام SQL
عند تمكين التحكم بالوصول وإدارة الحسابات المعتمدان على SQL في ClickHouse، يمكن أيضًا إنشاء المستخدمين الذين تُحدَّد هويتهم عبر مصادقة HTTP باستخدام عبارات SQL.
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server' SCHEME 'Basic'…أو تكون Basic هي القيمة الافتراضية من دون تعريف صريح للمخطط
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server'تمرير إعدادات الجلسة
إذا كان جسم الاستجابة من خادم مصادقة HTTP بتنسيق JSON ويحتوي على كائن فرعي settings، فسيحاول ClickHouse تحليل أزواج key: value فيه باعتبارها قيماً نصية وتعيينها كإعدادات جلسة للجلسة الحالية للمستخدم المُستوثَق منه. وإذا فشل التحليل، فسيتم تجاهل جسم الاستجابة الوارد من الخادم.