С расширением количества клиентов и количества различных программных конфигураций нашей облачной CRM-системы возникла необходимость организовать единый вход с лендинга (основного сайта) на все конфигурации, доступные конкретному сотруднику.
Под конфигурацией мы подразумеваем отдельный экземпляр CRM-системы, расположенный на отдельном поддомене (например, conf1.acme.com), имеющий собственную базу данных (MySQL).
Во всех конфигурациях всегда имеется таблица пользователей, имеющая одинаковую или примерно одинаковую структуру: поля «логин» и «пароль» всегда одного типа.
В одной конфигурации может быть доступно несколько организаций: документы определенных типов связаны между собой и доступны только в конкретной организации.
Один и тот же пользователь может быть членом нескольких разных организаций в одной конфигурации.
На лендинге (acme.com) есть форма ввода логина/пароля.
Чтобы избежать привлечения сторонних сервисов, было решено разработать внутреннее программное решение для единого входа во все конфигурации.
Было сделано предположение, что учетная запись MySQL, под которой работает база данных сайта, имеет доступ на чтение пользовательских таблиц баз данных конфигурации.
Кроме того, форма сброса пароля требует, чтобы учетной записи был предоставлен доступ для записи к паролю и хэш-полю сброса пароля в таблицах конфигурации пользователя.
Список конфигураций заносится в таблицу конфигурации базы данных основного сайта.
При авторизации происходят следующие действия: 1. Пользователь вводит логин и пароль на сайте и нажимает кнопку «Войти».
По таблице конфигурации отправляются запросы на совпадение логина и пароля в таблицах пользователей конфигурации и наличие такого пользователя в организациях конфигурации.
2. Формируется и возвращается список доступных пользователю конфигураций и организаций.
Если совпадение не найдено, отображается сообщение «неверный логин/пароль».
3. Нажав на необходимую конфигурацию и организацию, пользователь авторизуется в системе.
Одним из преимуществ такого подхода можно считать определенную секретность: пользователь с одним и тем же логином в разных конфигурациях может иметь разные пароли.
При вводе логина и одного пароля он не увидит конфигурацию с другим паролем.
Это может быть полезно, если, например, при наличии одного клиента невозможно показать, что существует другой клиент. К сожалению, этот же момент можно отнести и к недостаткам: нужно запоминать много разных паролей, теряется смысл единого входа.
Чтобы добавить в такую модель новую конфигурацию SRM, достаточно добавить соответствующую строку в таблицу конфигурации и зарегистрировать ранее указанные права в базе данных конфигурации.
Для удаления достаточно удалить соответствующую строку из таблицы конфигурации.
В случае с данной моделью есть возможность быстрой смены конфигурации на любую другую доступную.
Например, вы можете быстро перейти с конфигурации 2 на конфигурацию 1. Или переключаться между организациями одной конфигурации.
В этом случае для работы скрипта необходимо либо предоставить права на чтение таблицы конфигурации учетной записи конфигурации MySQL, либо получить доступ к этой таблице через учетную запись MySQL основного сайта.
Теги: #crm #облачные сервисы #авторизация #CRM системы
-
Профессиональные Блогеры Равны Журналистам
19 Oct, 24 -
Первый Спутник: Альтернативная История
19 Oct, 24 -
Спящий Режим На Proxmox2
19 Oct, 24 -
Будущее Высшего Образования
19 Oct, 24 -
Нмап 6
19 Oct, 24 -
Повышаем Производительность Труда.
19 Oct, 24