0. Fragster 1002 20.04.15 15:32 Сейчас в теме

Выставляем один из вебсервисов без авторизации, без второй публикации

Иногда нужно отключить авторизацию на вебсервере для одного из вебсервисов (сделать его общедоступным), или в принципе выставить один вебсервис "наружу", оставив остальные доступными только из локальной сети.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Makushimo 155 21.04.15 08:41 Сейчас в теме
Интересно.
Не понятно только куда этот скрипт подключать.
в каком месте всей инфраструктуры его ставить?
2. Fragster 1002 21.04.15 09:25 Сейчас в теме
(1) Makushimo, на тот сервер, на котором вы планируете опубликовать общедоступный сервис. Это может быть тот же сервер, на котором крутится публикация 1с, но не обязательно, главное, чтобы с него был доступ до того сервера, на котором публикация 1с.
Требования к серверу - php 5 с установленным модулем curl, ОС не важна.
3. Makushimo 155 21.04.15 09:50 Сейчас в теме
ничего не понял, но спасибо за ответ -))
4. Fragster 1002 21.04.15 10:52 Сейчас в теме
(3) Makushimo, ну, допустим, есть сервер с публикацией 1с и адресом 192.168.0.1 и веб-сервер с сайтом компании http://webserver.ru/ с внутренним адресом в локальной сети 192.168.0.2 и неважно каким внешним.

На вебсервере сайт лежит в папке /srv/www/site. Тогда мы кладем скрипт в эту папку и меняем в нем $_1c_user = 'имяпользователя1с', $_1c_pwd = 'паротльпользователя1с', $_1c_addr = 'http://192.168.0.1/путьдопубликации публикаци/ws/имясервиса.1cws'.

После этого при доступе извне по адресу http://webserver.ru/soap-proxy.php будет запрос логина и пароля, но не 1сных, а тех, которые прописаны в $php_user и $php_pwd. Как вообще отключить авторизацию - я уже написал в самой публикации.

WSDL будет по адресу http://webserver.ru/soap-proxy.php?wsdl

Плюсом такого подхода является то, что на вебсервере, доступном извне не нужно ставить устаревший апач 2.2, запрос авторизации никак не задействует 1с - т.е. не создает доп нагрузки на 1с "в случае чего", а также то, что мы можем одним движением выключить подобный доступ, или перенаправить на другой сервер, не заморачиваясь с "родной" публикацией 1с. Ну и к подобной авторизации что-нибудь типа fail2ban можно прикрутить, например, или еще какие службы, что в случае с 1с проблематично.
5. baton_pk 401 21.04.15 11:57 Сейчас в теме
У меня всё работает из-коробки через SSH-туннели. Думаю, stunnel тоже может с таким справиться.
6. Fragster 1002 21.04.15 12:00 Сейчас в теме
(5) baton_pk, как ssh-туннели помогают _подменить_ авторизацию 1с?
baton_pk; +1 Ответить
7. baton_pk 401 21.04.15 13:38 Сейчас в теме
(6)
хм. Слона-то я и не заметил. Извиняюсь.
8. planar74 1 23.04.15 16:16 Сейчас в теме
1. Каком смысл в подмене имени пользователя и пароля?
2. Чем проброс apache не устраивает?
9. Fragster 1002 23.04.15 18:55 Сейчас в теме
(8) planar74,
иногда есть требование не светить логин-пароль от 1с
иногда нужно выставить один из нескольких веб сервисов публично
иногда на публичном веб сервере есть требования к ПО и 1с там быть не должно (например это дешевый хостинг без возможности установки ПО).
иногда нужно отсечь "недобросовестных пользователей сети", которые брутфорсят пароли с помощью fail2ban
да и вообще можно придумать кучу вещей, которые можно сделать, вмешавшись в процесс авторизации, хоть направление запроса на разные базы в зависимости от имени пользователя и пароля.

и да, что такое "проброс от апач"? modrewrite?
10. planar74 1 24.04.15 09:59 Сейчас в теме
(9)
"иногда есть требование не светить логин-пароль от 1с" - то есть, если засветится пароль от прокси - злоумышленник не получит доступа к данным? Получит и еще как.
"и да, что такое "проброс от апач"? modrewrite?"

<VirtualHost *:*>
ServerName hostname.example.com
ProxyPreserveHost On
ProxyPass /freews http://192.168.111.2/base/ws/superpuper.1cws
ProxyPassReverse /freews http://192.168.111.2/base/ws/superpuper.1cws
RequestHeader set Authorization "Basic dXNlcjpwYXNzd29yZA=="
</VirtualHost>

Где dXNlcjpwYXNzd29yZA== user:password в кодировке base-64
Обращение к сервису http://hostname.example.com/freews?wsdl

З. Ы. Прикрепил файл с куском конфига
Прикрепленные файлы:
sample.txt
11. Fragster 1002 24.04.15 11:08 Сейчас в теме
(10) planar74, этот способ все запросы перенаправит, или я ошибаюсь? Нужен поддомен, получается.
12. planar74 1 24.04.15 12:52 Сейчас в теме
(11)
Все, которые поступят на http://hostname.example.com/freews?wsdl, остальные не тронет.
13. planar74 1 24.04.15 13:07 Сейчас в теме
(11)
А если по IP соединяться - можно так
<VirtualHost 192.168.1.1:*>
ProxyPreserveHost On
ProxyPass /freews http://192.168.111.2/base/ws/superpuper.1cws
ProxyPassReverse /freews http://192.168.111.2/base/ws/superpuper.1cws
RequestHeader set Authorization "Basic dXNlcjpwYXNzd29yZA=="
</VirtualHost>
14. Fragster 1002 25.02.16 11:31 Сейчас в теме
Нашлось еще одно применение - если менять $post_data с $server_output, то можно привести "несовместимые" с 1с сервисы в совместимый с 1с вид
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Специалист 1 категории (Программист 1С ФЗД)
Фрязино
зарплата от 110 000 руб.
Полный день

Специалист 1 категории (Программист 1С)
Фрязино
зарплата от 110 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Специалист линии консультаций 1С
Санкт-Петербург
Полный день