"Забыв логины и пароли
мы чушь прекрасную пороли"
Федор Иващенко (C)
***
— Скажи пароль!
— Что?
— Не тот.
— Сейчас же откройте!
— Вообще не тот.
Небольшое предисловие, чтобы было понятно откуда ноги растут. Да-да, ноги растут из этого самого места. И вроде бы несложная задача превратилась в этакий квест. Итак, есть система учета заказов на 1С, необходимо пустить в нее дилеров. Создание интерфейса для дилеров, как и разграничение прав особых проблем не вызывало. Но потом выяснилось, что есть нюансы.
Вот список этих "нюансов":
Вариантов решения несколько. Самый простой - ВПН. Правда нюансы все порят и выходит, что ВПН - не вариант. К тому же это внешние пользователи. Т.е. необходимо обеспечить работоспособность без установки ПО и вмешательства системных администраторов.
Так родилась идея. А что если реализовать аутентификацию на nginx. Там мы можем творить, что пожелаем. А уж когда мы идентифицируем пользователя, мы его пустим в 1С. А чтобы не было сомнений, что этот тот, кто нам нужен, мы привяжем пользователя 1С к его мобильному телефону. А пароль сделаем одноразовым.
Посидели, покумекали и у нас все получилось.
Дилер заходит на страничку авторизации. Средствами nginx выводится страница для ввода логина и пароля
Логин Дилер получает от нас. Далее Дилер набирает специальный номер. И ему голосом диктуется одноразовый пароль из 6 цифр. И начинает работать связка логин-пароль. До звонка этой связки просто не существовало. Чтобы звонок был бесплатным циферки диктуются вместо гудков вызова, т.е. без поднятия трубки с нашей стороны. Астерикс и так умеет. Ну с нашей помощью конечно. Можно пароль рассылать через СМС, но это деньги, а нам хотелось на халяву. Можно пароль посылать в мессенджеры, но их так много разных. Наш вариант будет работать даже у Нео на Nokia 8110.
После авторизации включается прокси для данного конкретного окна браузера, а пароль обнуляется. Т.е. далее данная связка логин-пароль не существует. Модуль ngx_http_upstream_module пробрасывает входящие запросы на внутренний веб-сервер.А в заголовки запросов подставляются параметры авторизации 1С, которые привязаны к данному логину и телефону. Там не все получилось сразу, 1С очень скупа на техническую информацию, но мы были очень упорны и уговорили 1С жрать авторизацию из заголовков. 1С просто не знала с кем связалась.
Если набрать номер с левого телефона, то в ответ будет тишина и одноразовый пароль не будет сгенерирован.
Таким образом мы закрыли все вопросы:
Надеюсь наш способ поможет Вам реализовать подобные задачи, возникающие в Вашей практике.
Телефон: +7 (4922) 47-90-31
Email: info@infos33.ru