يعد إنشاء بوابات الشركات ممارسة شائعة بين الشركات التي لديها عدد كبير من أنظمة المعلومات. إن وجود نقطة وصول واحدة إلى جميع الموارد اللازمة للعمل يلغي الحاجة إلى الخلط في العشرات من الإشارات المرجعية ويضع العديد من كلمات المرور في الاعتبار ، مما يعني أنه يمكن لموظفي الشركة التركيز على عملهم قدر الإمكان. أحد أنظمة المعلومات الرئيسية في هذه الحالة ، بالطبع ، هو نظام الاتصال الإلكتروني والبريد الإلكتروني للشركات ، لأن جميع موظفي المؤسسة يستخدمونها عملياً بطريقة أو بأخرى.
يعد Zimbra Collaboration Suite Open-Source Edition مجرد محطة عمل رقمية يمكنها توفير الوصول ليس فقط للبريد الإلكتروني ، ولكن أيضًا للتقويمات الرقمية وقوائم المهام ودفاتر العناوين ، وبمساعدة مجموعة من الإضافات Zextras Suite Pro والتحرير التعاوني للمستندات والشركات الدردشة النصية والمرئية والتخزين الشخصي Drive. بالإضافة إلى ذلك ، يمكن دمج Zimbra OSE بسهولة في بوابة الشركات. دعونا ننظر في كيفية القيام بذلك باستخدام نطاق company.ru كمثال.

هناك واجهتان لدمج بيئة نظام التشغيل Zimbra مع بوابة المؤسسة. الأولى ، واجهة URL ، تتمثل في إنشاء رابط خاص ، يمكنك من خلاله إنشاء لافتة ، عند النقر فوقها ، يتم إعادة توجيه المستخدم المعتمد على بوابة الشركة إلى حساب نظام التشغيل Zimbra OSE الخاص به ويمكنه أداء مهامه بأمان. الثاني يعتمد على التفويض المسبق باستخدام واجهة SOAP. الواجهة الأولى هي الأكثر شيوعًا وتستخدم بسبب سهولة تكاملها مع معظم بوابات الويب. عادةً ما يتم استخدام الواجهة الثانية مع البوابات التي تتطلب التحكم في إنشاء رمز مميز للمصادقة وإعادة توجيه المستخدم.
في كلتا الحالتين ، أول ما نحتاج إلى القيام به هو إعداد مجال البريد لدينا. للقيام بذلك ، قم بإنشاء مفتاح المصادقة المسبقة. ويتم ذلك باستخدام الأمر
zmprov createDomainPreAuthKey company.ru . سيحتوي ناتج هذا الأمر على مفتاح مكون من 64 حرفًا ، يتم الحصول عليه من خلال إنشاء 32 حرفًا بشكل عشوائي وتشفيرها ، على سبيل المثال
preAuthKey: 9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31 . يمكن إعادة عرض هذا المفتاح لاحقًا باستخدام الأمر
zmprov gd company.ru zimbraPreAuthKey . بعد ذلك ، يجب إعادة تشغيل خادم البريد لتصبح التغييرات نافذة المفعول.
دعونا نتعرف على كيفية تطبيق المصادقة المسبقة باستخدام واجهة URL. بعد ذلك ، استنادًا إلى مفتاح التفويض المسبق هذا ، سنقوم بإنشاء عنوان URL خاص حيث يمكن للمستخدم المصرح له بالفعل على بوابة الشركة تسجيل الدخول إلى Zimbra OSE دون الحاجة إلى إدخال كلمة مرور. سيبدو عنوان URL مثل
mail.company.ru/service/preauth؟{account-identifier{{by-value}{time{{expires►►&admin=1{{computed-preauth} .
المعلمات في عنوان URL هذا هي:
- {account-identifier} و {by-value} ، وهي ضرورية لتحديد الحساب. تشير المعلمة الأولى إلى معرفها ، والنوع الثاني من هذا المعرف. إذا لم يتم تحديد نوع {by-value} المستخدم ، فسيتم استخدام المصادقة حسب الاسم.
- {time} عبارة عن طابع زمني تم تحويله أثناء Unix
- {expires} هو الوقت بالميلي ثانية بعد انتهاء صلاحية رمز المصادقة. إذا تم تحديد 0 كقيمة لهذه المعلمة ، فسيتم استخدام وقت انتهاء صلاحية الرمز المميز للحساب الافتراضي
- [& admin = 1] هذه المعلمة مطلوبة فقط إذا كنت تريد استخدام المصادقة المسبقة لتسجيل الدخول ليس فقط إلى عميل الويب ، ولكن أيضًا إلى وحدة تحكم الإدارة. إذا تم تحديد هذه المعلمة ، فأدخلها بين المعلمات {account-ident} و {by-value} عند حساب HMAC.
- {computed-preauth} قيمة المصادقة المسبقة المحسوبة.
حساب {حساب محسوب} كما يلي:
- من الضروري جمع القيم {account-identifier} و {by-value} و {time} و {expires} معًا بهذا الترتيب
- اربطها ، مقسومًا على "|"
- حساب HMAC باستخدام DomainPreAuthKey
- تحويل قيمة HMAC إلى ست عشرية
على سبيل المثال ، الحصول على البيانات التالية:
- DomainPreAuthKey: 9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31
- {account-identifier}: manager@company.ru
- {بالقيمة}: الاسم
- {تنتهي الصلاحية}: 0
- {الوقت}: 1579862639
يمكنك إنشاء مجموعة المعلومات التالية
manager@company.ru|name|0|1579862639. ثم من هذا الخط ، يمكنك حساب SHA-1 HMAC: preauth = hmac ("manager@company.ru|0|1579862639"، "9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb0212cf970cb9bca63cb31") ؛ نتيجة لذلك ، نحصل على القيمة {computed-preauth}
93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a .
نستخدمها الآن لتجميع عنوان URL:
mail.company.ru/service/preauth؟account=manager@company.ru&expires=0×tamp=1579862639&preauth=93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a . بالنقر فوق عنوان URL هذا ، يمكنك إدخال عميل ويب Zimbra واستلام رمز مميز للمصادقة دون الحاجة إلى إدخال اسم حساب أو كلمة مرور.
إذا كنت تريد إجراء المصادقة المسبقة ، فاستخدم البيانات "
admin@company.ru|1|name|0|1579862639 " لحساب HMAC ، واستخدم
mail.company.ru/service/preauth؟account=admin@company URL لإدخال
.ru & تنتهي = 0 & timestamp = 1579862639 & preauth = 7b410ed71e4eb6c7724598587ae03078bca5e29f & admin = 1في حالة واجهة SOAP ، يتم استخدام طلب AuthRequest القياسي ، حيث يتم إرسال بيانات المصادقة المسبقة بدلاً من كلمة المرور باستخدام النمط التالي:
{معرف الحساب}
{المحوسب-التصريح المسبق}
املأ هذا النموذج بمثال manager@company.ru:
manager@company.ru
93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a
بعد ذلك ، يبقى فقط تشكيل رابط
company.ru/CorpPortal/preauth؟isredirect=1&authtoken= {...} برمز مصادقة سيعيد توجيه المستخدم إلى خادم Zimbra وتطبيقه باستخدام واجهة URL التي نعرفها بالفعل.
مهمة أخرى لمسؤول النظام الذي يقوم بتنفيذ مصادقة Zimbra المسبقة على بوابة الشركة الخاصة به هي أتمتة حساب قيمة {computed-preauth}. يمكن تحقيق ذلك باستخدام برنامج نصي يحل تلقائيًا محل جميع البيانات المطلوبة وفي الخرج يوفر رابطًا جاهزًا للمصادقة المسبقة. فيما يلي بعض الأمثلة لهذه البرامج النصية:
بيثون / جانغوdef webmail_redirect(request): from time import time import hmac, hashlib preauth_key = "9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31" preauth_url = "http://mail.company.ru/service/preauth" timestamp = int(time()*1000) try: acct = request.user.email pak = hmac.new(preauth_key, '%s|name|0|%s'%(acct, timestamp), hashlib.sha1).hexdigest() return HttpResponseRedirect("%s?account=%s&expires=0×tamp=%s&preauth=%s"%(preauth_url, acct, timestamp, pak)) except: pass return HttpResponseRedirect("/not_logged_in/")
PHP <?php $PREAUTH_KEY="9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31"; $WEB_MAIL_PREAUTH_URL="http://mail.company.ru/service/preauth"; $user = $_GET["user"]; $domain=$_GET["domain"]; $email = "{$user}@{$domain}"; if(empty($PREAUTH_KEY)) { die("Need preauth key for domain ".$domain); } $timestamp=time()*1000; $preauthToken=hash_hmac("sha1",$email."|name|0|".$timestamp,$PREAUTH_KEY); $preauthURL = $WEB_MAIL_PREAUTH_URL."?account=".$email."&by=name×tamp=".$timestamp."&expires=0&preauth=".$preauthToken; header("Location: $preauthURL"); ?>
لجميع الأسئلة المتعلقة بجناح Zextras ، يمكنك الاتصال بممثل Zextras ، Ekaterina Triandafilidi ، عن طريق البريد الإلكتروني katerina@zextras.com