Integrasi Zimbra Open-Source Edition dengan Enterprise Portal

Membuat portal perusahaan adalah praktik umum di antara perusahaan dengan sejumlah besar sistem informasi. Memiliki satu jalur akses ke semua sumber daya yang diperlukan untuk bekerja menghilangkan kebutuhan untuk bingung dalam lusinan bookmark dan mengingat beberapa kata sandi, yang berarti bahwa karyawan perusahaan dapat fokus pada pekerjaan mereka sebanyak mungkin. Salah satu sistem informasi utama dalam kasus ini, tentu saja, adalah komunikasi korporat dan sistem e-mail, karena praktis semua karyawan perusahaan menggunakannya dengan satu atau lain cara.

Zimbra Collaboration Suite Open-Source Edition hanyalah workstation digital yang dapat memberikan akses tidak hanya ke email, tetapi juga ke kalender digital, daftar tugas, buku alamat, dan dengan bantuan serangkaian ekstensi Zextras Suite Pro dan untuk pengeditan kolaboratif dokumen, perusahaan Obrolan teks dan video dan Drive penyimpanan pribadi. Selain itu, Zimbra OSE dapat dengan mudah diintegrasikan ke dalam portal perusahaan. Mari kita lihat bagaimana hal ini dapat dilakukan dengan menggunakan domain company.ru sebagai contoh.

gambar

Ada dua antarmuka untuk mengintegrasikan Zimbra OSE dengan portal perusahaan. Yang pertama, antarmuka URL, adalah membuat tautan khusus, yang dengannya Anda dapat membuat spanduk, ketika diklik, pengguna yang sah pada portal perusahaan akan dialihkan ke akun Zimbra OSE-nya dan dapat dengan aman melakukan tugasnya. Yang kedua didasarkan pada pra-otorisasi menggunakan antarmuka SOAP. Antarmuka pertama adalah yang paling umum dan digunakan karena kemudahan integrasinya dengan sebagian besar portal web. Antarmuka kedua biasanya digunakan dengan portal yang memerlukan kontrol atas pembuatan token otentikasi dan pengalihan pengguna.

Dalam kedua kasus, hal pertama yang perlu kita lakukan adalah menyiapkan domain email kita. Untuk melakukan ini, buat kunci pra-otentikasi. Ini dilakukan dengan menggunakan perintah companym zmprov generateDomainPreAuthKey . Output dari perintah ini akan berisi kunci 64-karakter, yang diperoleh dengan secara acak menghasilkan 32 karakter dan mengenkripsi mereka, misalnya preAuthKey: 9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31 . Kunci ini selanjutnya dapat dilihat kembali menggunakan perintah zmprov gd company.ru zimbraPreAuthKey . Setelah itu, Anda harus memulai kembali server surat agar perubahan diterapkan.

Mari kita cari tahu bagaimana menerapkan otentikasi awal menggunakan antarmuka URL. Kemudian, berdasarkan kunci pra-otorisasi ini, kami akan membuat URL khusus di mana pengguna yang sudah diotorisasi di portal perusahaan dapat masuk ke Zimbra OSE tanpa harus memasukkan kata sandi. URL akan terlihat seperti mail.company.ru/service/preauth?{account-identifier{{by-value}{time{{expires►►&admin=1{{computed-preauth} .

Parameter dalam URL ini adalah:

  • {pengenal akun} dan {menurut-nilai} , yang diperlukan untuk mengidentifikasi akun. Parameter pertama menunjukkan pengidentifikasinya, dan tipe kedua dari pengidentifikasi ini. Jika jenis {menurut-nilai} yang digunakan tidak ditentukan, otentikasi menurut nama digunakan.
  • {time} adalah timestamp yang dikonversi selama Unix
  • {expire} adalah waktu dalam milidetik setelah token otentikasi berakhir. Jika 0 ditentukan sebagai nilai parameter ini, waktu kedaluwarsa token untuk akun default digunakan
  • [& admin = 1] parameter ini diperlukan hanya jika Anda ingin menggunakan pra-otentikasi untuk masuk tidak hanya ke klien web, tetapi juga ke konsol administrasi. Jika parameter ini ditentukan, masukkan di antara parameter {account-identifier} dan {by-value} saat menghitung HMAC.
  • {computed-preauth} Nilai preauthentication yang dihitung.

Perhitungan {computed-preauth} adalah sebagai berikut:

  1. Anda harus menyatukan nilai-nilai {pengenal akun}, {dengan-nilai}, {waktu} dan {kedaluwarsa} dalam urutan ini
  2. Sejajarkan mereka, bagi dengan "|"
  3. Hitung HMAC menggunakan DomainPreAuthKey
  4. Ubah nilai HMAC menjadi heksadesimal

Misalnya, memiliki data berikut:

  • DomainPreAuthKey: 9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31
  • {pengenal akun}: manager@company.ru
  • {menurut-nilai}: nama
  • {kedaluwarsa}: 0
  • {waktu}: 1579862639

Anda dapat membuat set informasi manajer berikut ini@company.ru| nama |0|1579862639. Maka dari baris ini Anda dapat menghitung SHA-1 HMAC: preauth = hmac ("manager@company.ru|001579862639", "9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31" ; Hasilnya, kami mendapatkan nilai {computed-preauth} 93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a .

Sekarang kita menggunakannya untuk mengkompilasi URL: mail.company.ru/service/preauth?account=manager@company.ru&expires=0×tamp=1579862639&preauth=93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a . Dengan mengklik URL ini, Anda dapat memasukkan klien web Zimbra dan menerima token otentikasi tanpa harus memasukkan nama akun atau kata sandi.

Jika Anda ingin melakukan pra-otentikasi, maka gunakan data " admin@company.ru| 1|name|0|1579862639 " untuk menghitung HMAC, dan gunakan URL mail.company.ru/service/preauth?account=admin@company untuk memasukkan .ru & kedaluwarsa = 0 & timestamp = 1579862639 & preauth = 7b410ed71e4eb6c7724598587ae03078bca5e29f & admin = 1

Dalam kasus antarmuka SOAP, permintaan AuthRequest standar digunakan, di mana data pra-otentikasi dikirim bukan kata sandi menggunakan pola berikut:

{pengenal akun}
{computed-preauth}

Isi template ini dengan contoh manager@company.ru:

manager@company.ru
93a43cd03a5b2fca40f46c3ce99b4a4dd6e5676a

Setelah itu, tetap hanya untuk membentuk tautan company.ru/CorpPortal/preauth?isredirect=1&authtoken= {...} dengan token otentikasi yang akan mengarahkan pengguna ke server Zimbra dan mengimplementasikannya menggunakan antarmuka URL yang sudah kita ketahui.

Tugas lain untuk administrator sistem yang menerapkan pra-otentikasi Zimbra di portal perusahaannya adalah mengotomatiskan perhitungan nilai {computed-preauth}. Ini dapat dicapai dengan menggunakan skrip yang secara otomatis akan menggantikan semua data yang diperlukan dan pada output menyediakan tautan yang siap untuk pra-otentikasi. Berikut adalah beberapa contoh skrip tersebut:

Python / Django

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&timestamp=%s&preauth=%s"%(preauth_url, acct, timestamp, pak)) except: pass return HttpResponseRedirect("/not_logged_in/") 

Php

 <?php /** *  .     config.inc.php     . */ $PREAUTH_KEY="9b34da63e5c1cba4cf7eb8262bacb18f712f6abafb02cf670234cb9bca63cb31"; $WEB_MAIL_PREAUTH_URL="http://mail.company.ru/service/preauth"; /** *      .        GET. */ $user = $_GET["user"]; $domain=$_GET["domain"]; $email = "{$user}@{$domain}"; if(empty($PREAUTH_KEY)) { die("Need preauth key for domain ".$domain); } /** *    URL   */ $timestamp=time()*1000; $preauthToken=hash_hmac("sha1",$email."|name|0|".$timestamp,$PREAUTH_KEY); $preauthURL = $WEB_MAIL_PREAUTH_URL."?account=".$email."&by=name&timestamp=".$timestamp."&expires=0&preauth=".$preauthToken; /** *   URL   Zimbra */ header("Location: $preauthURL"); ?> 

Untuk semua pertanyaan yang terkait dengan Zextras Suite, Anda dapat menghubungi perwakilan perusahaan "Zextras" Ekaterina Triandafilidi melalui email katerina@zextras.com

Source: https://habr.com/ru/post/id485866/


All Articles