|
Два default.vrd к одной базе denk32, АнализДанных, mikecool, Hmster, Philix, Builder, Dzenn, bmitkin, RomanYS, elka302, boozin, ks_83, d4rkmesa, sikuda, Мыш серый, obs191, arsik, Smit1C, laeg, U4Me2, Linemoon, Asmody, Джордж1, SleepyHead, zva, ivanov-i-i, e053nk, Гипервизор, Андрюха, banco, ads55, craxx, RVN, Сукпун, cosmo_pro, Mafiozaa, lEvGl, sto-alex
| ☑ | ||
|---|---|---|---|---|
|
0
АнализДанных
25.04.25
✎
09:26
|
Добрый день, тема неоднократно поднималась, но какого-то конечного подробного ответа нигде не написано. Использую Апач. Интеграция с яндексом требует, чтобы в системе был HTTP-сервис для обменов:
1. Только для авторизации и получения токена. Он должен быть без авторизации к базе 1С, т.к. логин\пароль будет передан в сообщении сервиса. 2. Все остальные сервисы, которые авторизуются, через токен, полученный в п.1 Для отключения авторизации в п.1 мы прописываем в файле default.vrd логин\пароль пользователя из базы 1С, но это приводит к тому, чтоб абсолютно все сервисы перестают требовать авторизацию. Я вроде решил эту проблему, создал 2 разных HTTP-сервиса, для каждого сделал свой default.vrd, в одном прописал логин\пароль базы, а во втором убрал (подробней описал тут: https://forum.infostart.ru/forum15/topic294665/#message3161436). Но это решение привело к тому, что у меня получились разные пути к сервисам: 1. http:/MySite.ru/MyBase/hs/YandexEda/... - для основных сервисов 2. http:/MySite.ru/MyBase_YandexAuth/hs/YandexEdaAuth/... - для получения токена Яндекс требует, чтобы начальный адрес к сервису был одинаковый, и для получения токена, и для обработки данных. Т.е. должно быть как-то так: 1. http:/MySite.ru/MyBase/hs/YandexEda/security/oauth/token - для токена 2. http:/MySite.ru/MyBase/hs/YandexEda/nomenclature/composition - для обработки данных Подскажите, что и где надо прописать в конфигурационных файлах апача, чтобы к одному веб сервису или к одной базе было привязано 2 файла default.vrd. Или может можно прописать какой-то редирект в файлах апач, чтобы при обращении к сервису его перебрасывало на другой ? Видел в документации, что есть что-то подобное, но не разобрался как это сделать. |
|||
|
1
Garykom
гуру
25.04.25
✎
09:34
|
(0) подними nginx перед апачем и настрой там по url
заодно и ssl там поднимешь а не на апаче ну и понятно имена сервисов исправишь как тебе надо, hs левое уберешь https://interface31.ru/tech_it/2023/06/nastraivaem-nginx-kak-obratnyy-proksi-dlya-veb-publikacii-1spredpriyatie.html |
|||
|
2
Garykom
гуру
25.04.25
✎
09:39
|
(1)+ вместо обычного Nginx лучше взять OpenResty
там скрипты Lua из коробки, которыми можно запросы программно как угодно почти обрабатывать |
|||
|
3
АнализДанных
28.04.25
✎
22:56
|
Не хотелось мне использовать стороннее ПО, хотел решить задачу только средствами Apache. Мне удалось решить проблему, через Алиас, который указывается в httpd.conf
Предположим в http-сервисе "YandexEda" есть 2 метода с шаблонами: 1) security/oauth/token/ 2) order/ Когда мы будем публиковать нашу базу с именем "MyBase", то мы должны будем сделать в httpd.conf два alias, в одном целиком укажем путь к нашему сервису с авторизацией вот так: Alias "/MyBase/hs/YandexEda/security/oauth".... и соответствующей путь к файлу defautl.vrd, где прописан логин\пароль из базы 1С Во втором вот так: Alias "/MyBase"..... и соответствующей путь к другому файлу defautl.vrd, где логин\пароль не указан. Т.о в зависимости от url апач будет выбирать соответствующий файл "defautl.vrd". Как я понимаю он выбирает первый, который подошел по вхождению алиаса в url, соответственно тут еще важен порядок алиасов в файле httpd.conf. Там есть еще некоторые нюансы, я чуть подробней описал здесь: https://infostart.ru/1c/tools/1817924/#message3163393 |
|||
|
4
banco
28.04.25
✎
23:52
|
(0) Все сервисы яндекса пустите без логина, а токен в коде проверяйте
|
|||
|
5
АнализДанных
29.04.25
✎
10:31
|
(4) Рассматривал такой вариант, но тогда надо токен где-то хранить, срок действия проверять итд. Вариант в принципе рабочий. У меня тут больше спортивный интерес был,хотелось разобраться в этом вопросе. Этот вопрос очень часто задают на форумах, но решения нигде не описаны, я так понял что люди просто пускают без логин\пароля на всё сервисы Яндекса и не парятся.
В моей реализации мы просто выдаем токен, а дальше платформа сама проверяет при авторизации, что входящий токен валидный, а если он протух, то платформа ругнется соответствующим сообщением. |
| Форум | Правила | Описание | Секции | Поиск |