Корпоративний чат із доменною авторизацією

Корпоративне спілкування в домені

Задача: підняти свій self-hosted месенджер із преферансом і профурсетками доменною авторизацією і шифруванням.

Нюанси:

Nulla: хмарні рішення на кшталт Slack або Teams не підходять. Причин три: небезпечно, дорого, потрібен швидкий інтернет і сучасне залізо.

Unus: доменні логіни — є імена з кирилицею, тому jabber-варіанти на кшталт Openfire відразу відпадають, тому що вони не вміють в UNICODE-логіни.

Duo: в компанії працюють декілька доменів, треба їх використовувати одночасно. З прозорою авторизацією, щоб користувачі не вводили логіни/паролі, а відразу розгорнути MSI через GPO і в бій.

Tres: є користувачі з Android-девайсами, вони повинні підключатися паралельно, з тими ж доменними логінами. Через інтернет, із шифруванням, максимально безпечно. І щоб пуши працювали.

Час на попередній пошук такого меседжер не вказуємо, бо це завдання не з простих. Потрібен реально живий проект, який розробляється вже багато років. Ми ж реально розуміємо, що серйозний корпоративний софт — це більше про підтримку, виправлення недоліків і рішення "болю" клієнта, а не "клауд-бейсд", "футуродевелопмент", "блокчейн-інновейшн" і ось це ось все.

Для препарування обраний MyChat — корпоративний месенджер із давньою історією, великим живим, форумом підтримки та, (увага!) безкоштовною версією на 20 конкурентних підключень. Без trial-періоду. Його просто немає. Так буває.

Час на запуск — 15 хвилин. Поїхали.

  1. Завантажуємо і ставимо дистрибутив сервера
  2. Імпорт користувачів із домену
  3. Розгортаємо MSI пакет
  4. Вмикаємо прозору авторизацію
  5. Port mapping на роутері, щоб підключити людей через інтернет
  6. Доменний логін на Android-смартфоні
  7. Мультілогін і прив'язка до телефону

1. Завантажуємо і ставимо дистрибутив сервера


00:00 Завантажуємо дистрибутив с оф.сайту, нам потрібен поки тільки сервер під Windows.

01:00 Запускаємо інсталятор, все лінійно і просто. Сервер ставимо за замовчуванням, підійде будь-яка OS від Windows 7 і старше. Можна серверна, можна десктопна, x86/x64 — без різниці. Системні вимоги скромні, MyChat добре працює навіть на допотопному за сучасними мірками залізі.

Інсталятор просить підвищення привілеїв UAC при старті, воно й зрозуміло, навіщо — установка відбувається в Program Files. Дистрибутив з цифровим підписом, все пристойно.

В процесі установки програма просить email адміністратора та назвау компанії, в якій вона буде працювати:

Установка MyChat, заповнення даних

Email прописується в профіль адміна сервера, а назва компанії потім буде показуватися у чаті. Так що "Роги і копита" не використовуємо, а пишемо щось адекватне:)

Автозапуск у Windows не робимо:

Установка MyChat, автозапуск

Забігаючи наперед, скажу, що це потрібно, щоб запускати сервер службою. Ну а поки просто потренуємося з GUI-додатком.

03:00 Запускаємо MyChat Server:

Установка MyChat, дозвіл доступу в брандмауері Windows

Дозволяємо доступ. Таких запитів буде ще два, для вбудованого Web-сервера NodeJS і TURN-сервера для роботи дзвінків.

Сервер працює:

Установка MyChat, запуск MyChat Server

03:10 Тиснемо кнопку "Адміністрування" і заходимо в адмінку:

Адмінка MyChat Server

Хочеться штовхнути розробників Openfire, адже можна ж зробити зручно та зрозуміло, а не ходити по форумам у спробах дізнатися, а який же дефолтовний логін і пароль у адміністратора? :)

Система попереджає нас, що треба буде поміняти логін/пароль адміна і впускає в консоль управління:

Адмінка MyChat Server, інтерфейс

Адамінка спритна, швидко працює і добре реагує на команди управління.

Вся навігація робиться через дерево зліва, яке, як гармоніка, відкривається, коли обираєш кореневий елемент. Можливостей і різних фіч тут гора з візком, але все грамотно розподілено по розділах + є вбудована довідка за F1. Відкривається тут же, в браузері. У ній можна залипнути на кілька годин:)

Довідка про управління MyChat


2. Імпорт користувачів із домену


04:30 Заходимо в імпорт користувачів з домену:

Імпорт користувачів із домену в MyChat

Тут все просто. Вказуємо хост контроллера домену і будь-якого користувача з паролем, у якого є право підключатися до домену. Це необов'язково адмін.

Підключення відбувається через LDAP, завантажуються користувачі, їх фотографії, а також структура компанії, якщо у вас все правильно розкидано по Organizational Units в дереві домену. Якщо немає — то можна тільки втягнути користувачів, підкрутивши фільтр імпорту, щоб взяти тільки тих, кого треба:

Налаштування LDAP в MyChat

Натискаємо кнопку "Підключитися", а потім "Імпортувати". Все, облікові записи з додатковими полями типу email, посади, і телефони імпортовані.


3. Розгортаємо MSI пакет


6:00 Завантажуємо MSI з сайту розробників і встановлюємо його через GPO. Все стандартно. Є навіть інструкція, як це робити, для тих, хто робить це перший раз або робив давно і вже призабув.

Є, до речі, цікавий нюанс, що стосується того, як краще ставити клієнтську програму, MSI пакетом або за класикою, звичайним EXE-інсталятором. Хтось може заперечити, мовляв, а навіщо городити город із звичайним інсталятором, потрібно скрипти малювати, щоб автоматом розгорнути додаток, а MSI — це рішення "з коробки", схвалене самими майками Microsoft.

Все так. Але якщо ви ставите MyChat Client EXE-інсталятором, він за замовчуванням пропонує ставити додаток в профіль Windows-користувача. А MSI пакет ставиться тільки в Program Files. За каноном.

Через це, коли будете ставити оновлення, то для оновлення через GPO користувачам треба зробити logoff/logon, щоб політика застосувалась і оновлення месенджера відбулося. А якщо програма встановлена ​​в C:\Users\%USERNAME%\AppData\Local\MyChat Client\ — оновлення йде прямо з вашого сервера MyChat, "на льоту". Це реально дуже зручно і швидко. Підвищення привілеїв UAС не потрібно.

Який варіант обрати — вирішувати вам. А ось довідка для допомоги, як автоматизувати установку додатка (ключі інсталятора).


4. Вмикаємо прозору авторизацію


8:00 Тут відразу "два в одному". По-перше, клієнтський додаток повинен знати, що потрібно використовувати прозору авторизацію. Тому що в масштабах сервера різні типи авторизацій можна довільно "міксувати". Що кому зручно.

А по-друге, програма має знати, куди підключатися, це хост або IP сервера MyChat.

Щоб налаштувати все це, потрібно завантажити через ті ж групові політики простий REG-файл такого виду:

REGEDIT4
    [HKEY_CURRENT_USER\Software\MyChat Client]
      "Domain" = "Domain_name"
      "IP" = "IP_adress_MyChat_Server"

Цих двох полів досить. За подробицями і більш тонким налаштуванням варто заглянути в офіційну довідку (пункт 3).


5. PPort mapping на роутері, щоб підключити людей через інтернет


12:00 Пункт необов'язковий, якщо у вас люди тільки в локальній мережі або через VPN, то налаштування портів на роутері не знадобиться.

Якщо ж ви підключаєте людей через інтернет, то потрібно налаштувати port mapping на роутері.

Список портів, які потрібно прокинути, вказано в довідці (зеленим кольором).

Для тих, хто чує ці слова вперше, суть така: є зовнішня ( "біла") IP адреса, доступна через інтернет і видана компанії провайдером. Цю електроннау адресу була присвоєно роутеру, який роздає інтернет в офісі.

На цю адресу будуть підключатися люди через інтернет.

Роутер налаштовується так, що всі звернення на свою адресу за вказаними портів (TCP 2004, 443, 8888) він переадресовує всередину локальної мережі на IP адресу, де працює MyChat Server (наприклад, 192.168.10.100).

Якщо для вас це фількіна грамота, краще попросити фахівця налаштувати все, це робиться за пару хвилин. Штатна процедура, ніякої магії.

До речі, є важливий момент для Android. Є політики безпеки гугла, які вимагають, щоб додаток із зовнішніх мереж з'єднувався тільки по HTTPS (протокол з шифруванням). Це нормально, але вам потрібен сертифікат (куплений, або згенерований через Let's Encrypt — не важливо). А цей сертифікат видається тільки на домен, а не на IP адресу. Тобто, крім зовнішнього IP вам потрібен ще й домен, прив'язаний до цього IP.

Після того, як все налаштували, можна перевірити коректність через адмінку MyChat.

Тепер ви знаєте все:)


6. Доменний логін на Android-смартфоні


15:00 Тут все досить просто. Завантажуєте додаток з маркету , запускаєте, додаєте свій сервер, вказуєте логін користувача з доменом і пароль.

Ніякої прозорої авторизації, на жаль. Але це, в принципі, логічно. Це ж смартфон, а не Windows-комп'ютер, авторизований в домені.

В момент підключення до сервера Android-додаток передає по зашифрованому каналу логін і пароль доменного користувача на сервер MyChat, а той вже через LDAP перевіряє, чи можна робити логін. Якщо все ок — ви потрапляєте в чат. Після першого успішного логіна вхід робиться автоматично.

Важливий момент. Для того, щоб працювали PUSH-сповіщення у смартфоні, на вашому сервері MyChat повинен бути інтернет і доступ до mychat-server.com по TCP порту 52020. Якщо доступ закритий — зробіть правило в брандмауера для вихідного трафіку.


7. Мультилогін і прив'язка до телефону


Практично у всіх месенджерах є обов'язкова прив'язка до номера телефону. Тобто, смартфон — в першу чергу, а комп'ютер або ноутбук вже потім. Наприклад, ви можете запустити Telegram на смартфоні та на комп'ютері. Повідомлення будуть відображатися і там і там, автоматично синхронізуючись на різних пристроях.

А ось WhatsApp спочатку тільки на смартфоні, а вже потім на комп'ютері.

Але якщо у вас немає зайвого смартфона, або ви не хочете підключати свій номер телефону — то в більшість месенджерів вам не потрапити. Telegram, Viber, Line, Skype, WhatsApp — всі вимагають номер телефону.

З MyChat в цьому плані набагато зручніше. Не хочете використовувати номер телефону — ніхто не змушує, входите по ніку. Або за адресою електронної пошти. Або доменним ім'ям. Та хоч по UIN, як в кошлаті 90-е в асьці. Загалом, ви зрозуміли:)

Обмежень на кількість одночасних "інкарнацій" на різних пристроях немає. Аби ліцензій вистачило.



Служба поддержки