1. spezc 587 02.11.16 11:18 Сейчас в теме

Открыть веб-клиент минуя окно авторизации

Есть сайт, на котором есть два поля - логин и пароль (в них вводятся данные учетки 1С). Нужно после ввода логина и пароля и нажатия кнопки ВХОД сделать редирект на адрес опубликованной базы и чтобы база открылась без окна авторизации.

Как я понимаю, скрипт который висит на кнопке вход, должен взять строку базы данных (например www.myserver.ru/mybase) взять логин и пароль и каким то образом скомпоновав это - открыть сессию веб-клиента (допустим в отдельном окне).

Как это сделать? Неужели что-то типа www.myserver.ru/mybase?N=User1&P=abc123
это же по сути в чистом виде передача логина/пароля.

Как правильно выполнить сие действие?
Вознаграждение за ответ
Показать полностью
Найденные решения
16. СергейКа 673 07.11.16 11:05 Сейчас в теме +17 $m
Простейшая веб форма для входа. Вставляешь свой адрес базы и оставляешь нужные параметры. При открытии нет запроса пользователя и пароля 1С.

<HT ML xmlns="http://www.w3.org/1999/xhtml"><HEAD>
<MET A http-equiv="Content-Type" content="text/html; charset=utf-8" />
<BODY>
<FO RM action="https://localhost/Base/e1cib/start/" method="post">
    Пользователь: <INPUT id="usr" name="usr" />
    Пароль: <INPUT id="pwd" type="password" value="" name="pwd" />
    Низкая скорость: <INPUT id="lowclientconnectionspeed" type="checkbox" name="lowclientconnectionspeed" />
    Параметр запуска: <INPUT id="launchparameter" name="launchparameter" />
    Язык интерфейса: <SELECT id="systemlanguage" name="systemlanguage">
        <OPTION value="ru" selected="">Русский</OPTION>
        <OPTION value="en">Английский</OPTION>
    </SELECT>
    Код локализации сеанса: <SELECT id="localecode" name="localecode">
        <OPTION value="ru" selected="">Русский</OPTION>
        <OPTION value="en">Английский</OPTION>
    </SELECT>
    Область данных: <INPUT id="zone" name="zone" />
    <INPUT id="authfailhandling" type="hidden" value="error" name="authfailhandling" /> 
    <P><INPUT type="submit" value="ОК" /> </P>
</FORM>
</BODY>
</HTML>
Показать
herfis; spezc; Merc; +3 Ответить
22. kuzev 40 11.11.16 15:35 Сейчас в теме +2 $m
Остальные ответы
Избранное Подписка Сортировка: Древо
7. Fox-trot 105 02.11.16 22:13 Сейчас в теме
(1) а если просто открыть сайт www.myserver.ru/mybase без приседаний, 1с доступно?
как там у вас щас работает?
10. spezc 587 04.11.16 07:48 Сейчас в теме
(7) да, если просто открыть по ссылке - то все как обычно, окно авторизации
9. Fragster 929 03.11.16 11:46 Сейчас в теме
(1) http://server/path/to/base/?N=user&P=password - отдача, да, но юзер даже не заметит логин-пароль, только если поснифать трафик или отладчиком браузера посмотреть заголовки - там будет несколько редиректов. Ссылку не обязательно отображать на клиенте, сделать можно на стороне сервера через отдачу кода состояния 301 и Location
11. spezc 587 04.11.16 07:49 Сейчас в теме
(9) так дело не в том что пользователь увидит, а в том что не безопасно)))
любой сниффер выловит это и получит логин и пароль
12. Fragster 929 04.11.16 08:52 Сейчас в теме
(11) если https, то только прокси (и то не всегда) и сам браузер. То, что при просто авторизации логин и пароль также передаются в открытом виде (если не использовать https) не смущает?
13. spezc 587 06.11.16 06:04 Сейчас в теме
(12) то что при http логин пароль передается в открытом виде это да, но это решу через https.
получается если будет https - то и формировать скрипом ссылку http://server/path/to/base/?N=user&P=password и подсовывать ее браузеру - не грех? и это безопасно?
14. Fragster 929 07.11.16 10:44 Сейчас в теме
(13) ну, пользователь теоретически сможет его подсмотреть. Правда для этого надо специфические инструменты применять. Например стандартные инструменты разработчика firefox сбрасывают сетевую панель при каждом редиректе и засечь заголовок 301 очень проблематично (1с сама делает редирект на url без логина пароля, так что получается цепочка редиректов сайт -> url с логином -> url без логина)
2. igel9780 156 02.11.16 11:24 Сейчас в теме
Необходимо настроить LDAP аутентификацию на сайте.
3. spezc 587 02.11.16 11:28 Сейчас в теме
мда... вопросов стало еще больше чем ответов. я правильно понимаю, что раз "LDAP аутентификация" мне ничего не говорит и быстрый наскок на гугл с подобным запросом мне ничего не прояснил - я в трудной ситуации?

по сабжу - сайта как такового нет, есть хтмл страница где будут два поля логин пароль и кнопка вход
4. igel9780 156 02.11.16 11:31 Сейчас в теме
База же опубликована на веб-сервере. IIS? Он позволяет настроить LDAP аутентификацию.
5. spezc 587 02.11.16 11:41 Сейчас в теме
6. imm0rtal 1 02.11.16 21:54 Сейчас в теме
чуваки говорят что логин юзера в 1с должен быть привязан к учетке ОС. Ну и в IIS авторизация тем же самым
8. igel9780 156 03.11.16 11:41 Сейчас в теме
Apache уже сложнее. Я только краем уха слышал про настройку LDAP-авторизации под апачем.
15. СергейКа 673 07.11.16 11:00 Сейчас в теме
Версия платформы какая?
Есть стандартный вход через рест.
16. СергейКа 673 07.11.16 11:05 Сейчас в теме +17 $m
Простейшая веб форма для входа. Вставляешь свой адрес базы и оставляешь нужные параметры. При открытии нет запроса пользователя и пароля 1С.

<HT ML xmlns="http://www.w3.org/1999/xhtml"><HEAD>
<MET A http-equiv="Content-Type" content="text/html; charset=utf-8" />
<BODY>
<FO RM action="https://localhost/Base/e1cib/start/" method="post">
    Пользователь: <INPUT id="usr" name="usr" />
    Пароль: <INPUT id="pwd" type="password" value="" name="pwd" />
    Низкая скорость: <INPUT id="lowclientconnectionspeed" type="checkbox" name="lowclientconnectionspeed" />
    Параметр запуска: <INPUT id="launchparameter" name="launchparameter" />
    Язык интерфейса: <SELECT id="systemlanguage" name="systemlanguage">
        <OPTION value="ru" selected="">Русский</OPTION>
        <OPTION value="en">Английский</OPTION>
    </SELECT>
    Код локализации сеанса: <SELECT id="localecode" name="localecode">
        <OPTION value="ru" selected="">Русский</OPTION>
        <OPTION value="en">Английский</OPTION>
    </SELECT>
    Область данных: <INPUT id="zone" name="zone" />
    <INPUT id="authfailhandling" type="hidden" value="error" name="authfailhandling" /> 
    <P><INPUT type="submit" value="ОК" /> </P>
</FORM>
</BODY>
</HTML>
Показать
herfis; spezc; Merc; +3 Ответить
18. spezc 587 11.11.16 08:07 Сейчас в теме
(16) Сергей, спасибо, как будто то что надо.
Однако в моем случае не взлетело. Сначала не хотело воспринимать zone - т.е. при нажатии кнопки ОК переходил к базе без разделителя. Я добавил значение разделителя к адресу. Теперь по кнопке ОК переходит к базе, но попадают на окно авторизации (даже пользователь не подставился). Причем в параметрах указываю русский, а попадаю на английский. Поэтому сделал вывод что все параметры формы авторизации просто игнорируются... С чем может быть связано? И где вы нашли такой вариант? На ИТС я не находил...
19. Fragster 929 11.11.16 10:33 Сейчас в теме
(18) так надо свое окно авторизации?
21. spezc 587 11.11.16 15:22 Сейчас в теме
(19) Неее) Мне надо страницу, где будет два поля (логин и пароль), типа той что в (16). И чтобы по нажатию на кнопку ОК пользователя переадресовало в 1С, но уже без адинесного окна авторизации.

(20) Пользователей неизвестное количество
28. Fragster 929 12.11.16 13:20 Сейчас в теме
(21) ну так заменить окно ввода можно так:
<fo rm action="http://server/path/to/base/">
Пользователь: <input name="N" />

Пароль: <input type="password" value="" name="P"/>
</form>

при разделении данных добавляем <input type="hidden" value="значения разделителей" name="Z"/> (или не hidden, если пользователь сам должен вводить данные)
это проще, чем (16) и работает
22. kuzev 40 11.11.16 15:35 Сейчас в теме +2 $m
26. СергейКа 673 12.11.16 11:21 Сейчас в теме
(18) Не поверите, но на ИТС )) Правда не на диске, а онлайн.
Прямая ссылка, если есть доступ
ИТС онлайн

(22) Неа ))

(25) не уверен что хороший ход. Первую строку не все браузеры обработают, вторая строка не скрывает поле полностью, остается наименование.

(24) Попробуй первую строку написать так:
Пользователь: <INPUT id="usr" name="usr" and name="zone"/>

А строку с разделителем убрать вообще.
id - уникальный идентификатор для формы
name - имя передаваемого параметра в post запросе

Порядок передачи параметров вроде бы не важен, уже компоновал разные.
Не уверен на 100%, так как разделители не использую
27. СергейКа 673 12.11.16 11:26 Сейчас в теме
(18) PS.
Я сразу спросил про версию платформы, потому что постепенно поправляют глюки.
На 8.3.9 у меня почему то не срабатывает код локализации сеанса. Язык интерфейса меняется нормально, но сеанс запускается только на языке по умолчанию определенном в конфигураторе ((
17. kudlach 22 09.11.16 13:06 Сейчас в теме
Пароль пользователя 1С хранится в 8.х не в том же самом виде, что набирает пользователь, а в зашифрованном. Это раз.
А два - посмотрите механизм работы сервисов 1С-Контрагент или 1С-Отчеттность. Пароли на вход хранятся там отдельные, записаннные в регистры сведений, а доступ к web-сервису задействован через регистр сведений "Кэш программных интерфейсов" и в нем много чего интересного хранится.
Вдруг поможет...
20. Serginio 796 11.11.16 11:48 Сейчас в теме
Можно отключить авторизацию В default.vrd пропиши логин и пароль
ib="File="ПутьКБазе";usr=Логин;pwd=Пароль


http://www.forum.mista.ru/topic.php?id=783668#7
http://www.bizkit.ru/2013/05/24/1722/
23. spezc 587 11.11.16 16:13 Сейчас в теме
Коллеги, всем спасибо за помощь. Я не увидел что надо добавить e1cib/start. Все заработало)))
Именно то что я и хотел)
24. spezc 587 11.11.16 16:19 Сейчас в теме
Коллеги, вопрос в продолжение (наверно больше тем, кто в HTML понимает). Добавил еще 10 в качестве вознаграждения.

Как сделать так, чтобы было всего два поля Логин и Пароль, но чтобы значения поля Логин также использовалось как значение для Zone?

Суть - используется разделение данных и разделитель для пользователя равен его логину.
25. Labotamy 12.11.16 00:05 Сейчас в теме
<INPUT id="usr" name="usr" on change="document.getElementById('zone').value = this.value;"/> 
при изменении usr поменяется значение в zone

    <INPUT id="zone" name="zone" type="hidden"/>

Спрячет zone
30. spezc 587 16.11.16 09:54 Сейчас в теме
(25) спасибо, буду пробовать)
29. СергейКа 673 12.11.16 14:42 Сейчас в теме
Мне больше всего не нравится, что стандартный сервис авторизации не возвращает ошибку в случае чего. Думаю придется все же переделывать через http сервис.
31. spezc 587 16.11.16 09:56 Сейчас в теме
(29) а что значит переделывать через http сервис? можно добавить в конфигурацию свой http сервис, через который будет проходить авторизация?
32. СергейКа 673 17.11.16 10:41 Сейчас в теме
(31) Да. Собственно так и пришлось делать - свой http сервис, который выводит формы авторизации, регистрации, проверку паролей и тп.
Для авторизации сервис рисует форму описанную выше.
33. spezc 587 17.11.16 11:43 Сейчас в теме
(32) а могли бы поделится?)) или хотя бы в общих чертах рассказать?

Как я понимаю:
1. Делаем http сервис post для регистрации, с помощью <FO RM> делаем форму регистрации с login, pass, отправляем данные, в 1С принимаем, обрабатываем, создаем пользователя.
2. После этого надо как-то показать в браузере сообщение, что пользователь зарегистрирован. или показать форму уже для авторизации.
3. Также делаем http сервис для авторизации. Вот с этим понятно - https://localhost/Base/e1cib/start/, а как вот самому http сервис такой написать, что http сервис прописанный в 1С должен возвращать?


34. СергейКа 673 17.11.16 15:04 Сейчас в теме
(33) Хм, в общих чертах ))
1. Принцип создания с обратной связью неплохо описан здесь http://1cworks.com/courses-1c-http-service/lesson2-feedback и нескольких последующих уроках. Хотя там есть несколько ошибок, но разобраться можно.
2. Форму авторизации из этих уроков меняем на то что в (16) и несколько повозиться с встраиванием в свой сайт.
3. Собственно в этом разделе еще сам не гуру )) Тоже только осваиваю. Результат можно глянуть тут, но он в тестовом режиме, с основным сервисом еще не связан.
35. spezc 587 18.11.16 14:38 Сейчас в теме
(34) спасибо! там много полезной информации)))

думаю открытым остался всего один вопрос - авторизация через собственный сервис.
с регистрацией понятно - мы отправляем запрос через FORM, наш http сервис это обрабатывает, создает пользователя в ИБ, возвращает HTML страницу с сообщением что зарегистрирован.

поидее мы можем воспользоваться тем же FORM и авторизоваться при помощи POST запроса по адресу https://домен/имябазы/e1cib/start. А как сделать тоже самое и помощи собственного http сервиса? Т.е. чтобы я делал тот же пост запрос только по адресу https://домен/имябазы/hs/login, передавал в качестве параметров запроса логин и пароль, попадал в обработчик http запроса в 1С, там выполнял нужные мне проверки, и возвращал в браузер ... - вот тут вопрос - что возвращал в браузер? как в браузер вернуть команду что все, проверка в 1С (в моем собственном модуле) выполнена и что можно идти по адресу https://домен/имябазы/e1cib/start с нужными параметрами?
36. СергейКа 673 18.11.16 16:28 Сейчас в теме
(35) Я пробовал разные варианты.
Их есть несколько, но собственно потому и тестовый что не все получилось.
1. Вариант: формировать post запрос по адресу https://домен/имябазы/e1cib/start изнутри базы, без открытия формы и передавать нужные параметры после проверки. В этом случае сессия запускается, все прекрасно. Но есть один момент. Что бы сеанс был показан пользователю, его нужно прицепить к текущему сеансу браузера. Это у меня пока не получилось. Хочется кроссплатформенно, а методы работы с браузерами разные.
2. Вариант: сделать как сейчас есть, но проверку выполнять при запуске. К сожалению не всегда сработает.
3. Вариант: вообще отказаться от стандартного POST и выполнять запуск по другому. Но тут есть свои подводные камни.

К сожалению пока не получается сделать "красиво". Еще в поиске.

37. spezc 587 18.11.16 17:11 Сейчас в теме
(36)
1. т.е. проблема как раз вернуть эту самую строку "https://домен/имябазы/e1cib/start" с параметрами подключения на клиент (т.е. в браузер), чтобы пост запрос выполнился в браузере и произошел переход в 1С?

38. СергейКа 673 18.11.16 17:27 Сейчас в теме
39. spezc 587 18.11.16 17:29 Сейчас в теме
(36) нашел еще один вариант, не знаю насколько красивый и безопасный.

1. выполняем пост запрос, передаем в 1С логин-пароль, выполняем в 1С все проверки
2. в случае успешной проверки возвращаем в браузер html вида

<ht ml>
<body on load="document.forms['autologin'].submit();">
	<fo rm action="http://server.ru/ib/e1cib/start" method="post" id="autologin">
		<input type="hidden" id="usr" name="usr" value="admin"></td>
		<input type="hidden" id="pwd" name="pwd" value="123"></td>
	</form>
</body>
</html>


в таком случае при получении такого html в качестве ответа будет автоматически выполнен POST.

Единственно, что беспокоит это появление выполнение html где в коде явно прописан логин пароль. хотя с другой стороны, в этот же самый html пользователь и так вбивает свои данные...
СергейКа; +1 Ответить
40. СергейКа 673 18.11.16 17:44 Сейчас в теме
(39) Не совсем то что искал, но как вариант
41. СергейКа 673 18.11.16 20:19 Сейчас в теме
(39) В общем не работает этот код. Не запускается сессия в окне браузера ((
Сессия появляется, соединение с базой есть, но в браузере пусто. Как и было в 1-м варианте.

Нашел проблему. Не указан идентификатор формы, поэтому не работало
<body on load="document.forms['autologin'].submit();">
	<fo rm id="autologin" action="http://.../e1cib/start" method="post">
		<input type="hidden" id="usr" name="usr" value=#usr></td>
        <input type="hidden" id="pwd" name="pwd" value=#pwd></td
	</form>
</body>
42. СергейКа 673 20.11.16 17:28 Сейчас в теме
(39) Все, похоже из этого кусочка я выжал все что необходимо :)))
Результат можно посмотреть и пощупать тут . Предыдущая ссылка - "задний вход" )))
Еще конечно нужно над дизайном потрудиться, но 1С уже не участвует.
В 41 сообщении ошибся, это я неаккуратно скопировал.

Что касается безопасности... Собственно потому и пользуется протокол https. Не зря получал все сертификаты.
В базе пароли не хранятся нигде в явном виде.
Плюс http - сервис в моем варианте запускается неявно, посредством механизма сайта.
44. spezc 587 21.11.16 11:59 Сейчас в теме
(42) не работает... скрин прикрепил
Прикрепленные файлы:
47. СергейКа 673 21.11.16 14:30 Сейчас в теме
(44) Возможно включен в браузере addblock или аналогичный плагин, режущий фреймы?
43. Fox-trot 105 20.11.16 20:23 Сейчас в теме
делал на iis. думаю такое на любом сервере мона проделать
45. spezc 587 21.11.16 12:00 Сейчас в теме
46. Fox-trot 105 21.11.16 12:41 Сейчас в теме
да там все просто
1. в 1це заводишь пользователя, к примеру Гость. в свойствах устанавливаешь АутентификацияОС=Истина и ПользовательОС=ПользовательВиндыОтИмениКоторогоЛогинимсяАвто­матом
2. открваем консоль IIS. в свойствах каталога - Правила авторизации - добавляешь Разрешить=ПользовательВиндыОтИмениКоторогоЛогинимсяАвтоматом­
для меня осталась проблемой то, что в заголовке окна в правой части пишется "Гость"
48. СергейКа 673 21.11.16 14:45 Сейчас в теме
(46) Суть задачи не в том, что бы пускать всех под одним пользователем, а что бы каждого под собой. При этом иметь возможность регистрации новых пользователей.
Под одним пользователем пускать - можно просто прописать в vrd файле логин и пароль базы. И все равно под каким сервером опубликовано.
49. Fox-trot 105 21.11.16 16:57 Сейчас в теме
(48) в таком случае ldap видимо самое простое
50. СергейКа 673 21.11.16 17:09 Сейчас в теме
(49) Это решение так же не самое удачное, когда используется доступ извне, не корпоративной сети. Например как пользователь сайта. Сделать конечно можно, но совсем не айс...
51. Fox-trot 105 21.11.16 17:21 Сейчас в теме
тогда не совсем понятно для чего эти костыли со своей авторизацией. чем штатное окно/механизм не угодили?
52. СергейКа 673 22.11.16 14:14 Сейчас в теме
(51) А для регистрации тоже есть штатное окно?
53. Fox-trot 105 22.11.16 22:05 Сейчас в теме
так вам внезапно потребовалась регистрация? а ТСу тоже она нужна?
предупреждать нада :)
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день