Сервис авторизации и администрирования пользователей и отделов абонентов
Metadata.js с момента основания, ориентирована на одновременную работу с разными источниками данных: nosql, sql, 1c. Однако, мы долго не уделяли должного внимания инструментам администрирования пользователей. Наверное от того, что задачи удавалось решать встроенными в 1С средствами. Рост масштаба внедрений, выявил недостатки механизма управления пользователями из 1С и репликации баз _users
couchdb между активными серверами.
Специалисты по авторизации и аутентификации будут смеяться, но для меня стало открытием, что задачу проверки подлинности (аутентификации) пользователя и получения списка свойств и прав этого пользователя (авторизации), можно и нужно разделить.
Провайдер авторизации в 1С, точно так же, как провайдер авторизации Couchdb, возвращают при успешной авторизации пользователя, список его ролей. Couchdb, допускает хранение в базе _users
, дополнительных реквизитов, умолчаний и свойств пользователя. В 1С для тех же целей, используются справочник Пользователи
.
Схема выглядит вполне стройно, что вместе с авторитетом 1С и Couchdb, подталкивает разработчиков поступать так же - сваливать в кучу проверку подлинности пользователя и хранение списка его разрешений и умолчаний. Однако, этот подход не лишен недостатков:
- Администратор системы знает пароли пользователей. Будет лучше, если пользователь зарегистрируется в системе самостоятельно, а администротор назначит этому пользователю список ролей и разрешений
- Свойства пользователя дублируются во многих местах. Репликация этих свойств не повышает надёжность системы
- Отсуствует возможность использовать для аутентификации произвольных LDAP и oAuth провайдеров, т.к. мы ожидаем вместе с идентификатором пользователя получить список ролей и умолчаний
- Сложное администрирование инфраструктуры. Сейчас, при большом числе пользователей, их запросы перенаправляются разным физическим серверам, в зависимости от отдела абонента текущего пользователя. За маршрутизацию отвечает nginx, настройки которого приходится изменять руками при изменении топологии отделов авбоентов
Сервис администрирования пользователей, позволит:
- Назначить отдельных администраторов пользователей для каждого
Абонента
илиОтдела Абонента
(сейчас, пользователи всех абонентов в общем списке 1С) - Использовать для подтверждения подлинности LDAP, oAuth или произвольную couchdb без необходимости репликации базы
_users
- Обеспечить автоматическую маршрутизацию запросов пользователя к целевой couchdb в соответствии с отделом абонента текущего пользователя
- Реализовать сценарий самостоятельной регистрации пользователей с последующим назначением прав администратором Абонента (самообслуживание)
- Создавать и редактировать отделы абонентов, управлять репликациями баз
doc