Имя: Пароль:
1C
1С v8
Авторизация на сайте средствами 1С
, , ,
0 Ivan093
 
26.05.20
16:25
Всем привет.
Прошу помощи с задачей авторизации на сайте через 1С.
Есть сайт: https://nsddata.ru/ru, там есть кнопка Вход, которая отсылает на форму авторизации на сайт https://sso.moex.com/auth
Вот хотелось бы автоматизировать некоторые действия в 1с, а именно авторизоваться, а далее уже делать запросы к первому сайту.
Но пока не могу понять как.
1 ДенисЧ
 
26.05.20
16:26
"Welcome to Keycloak"

Я бы не рисковал ходить на сайт и вводить пароль на сайте с названием "клоака"...
2 arsik
 
гуру
26.05.20
16:46
(0) Ставь Fiddler. Посмотри внутренности авторизации через браузер.
Потом то же самое делай в 1С.
Скорее всего на https://sso.moex.com/auth - ты должен получить токен. И уже с этим токеном посылать запросы на https://nsddata.ru/ru
3 Гений 1С
 
гуру
26.05.20
18:15
(2) селениум советовали?
ну или веб-браузер на формму, там переходишь, заполняешь поля и клик посылаешь.
4 Ivan093
 
26.05.20
18:54
(1) )) Я ссылку обрезал, полная выглядит так, похоже тут тоже токены какие-то, которые генерит первый сайт.

https://sso.moex.com/auth/realms/moex/protocol/openid-connect/auth?kc_locale=ru&response_type=code&redirect_uri=https%3A%2F%2Fnsddata.ru%2Fru&client_id=NSDDATA&nonce=62ffba1566b5c1016d388b3c74f48de2&state=a2d366b9b88bcd2d14421b147f643dac&scope=openid
5 arsik
 
гуру
27.05.20
00:16
(4) Ну так через фиддлер будет видно все.
Ты запрос к основному.
В ответе прилетит перенаправление (та самая ссылка с кодом, что-то там 300-310 https://developer.mozilla.org/ru/docs/Web/HTTP/Redirections).
Ну и далее все как в (2)
6 Ivan093
 
27.05.20
07:01
Буду пытать. Спасибо!
7 АНДР
 
27.05.20
07:08
(0) См. доку. В конце запроса надо указать свой api key.
8 Ivan093
 
27.05.20
07:09
(7) Там есть апи, но доступ к нему платный и не дешевый. Клиенту иногда надо инфу оттуда выдергивать, вот и решил схитрить (клиент, а не я): без апи странички парсить.
9 idemat
 
27.05.20
07:46
(3) ну или веб-браузер на формму, там переходишь, заполняешь поля и клик посылаешь.

мне такое же нужно, можно простенький пример?
10 vde69
 
27.05.20
07:53
не хотел писать, но все-же напишу

все системы авторизации работают на куках или на параметрах сесии, в 1с с этим сильные проблемы, по этому прежде чем начинать делать это в 1с почитайте про то где и как у вас будут хранится локальные данные хеша авторизации
11 Ivan093
 
27.05.20
08:00
(10) Ну да, я примерно так и представлял. Решал подобные задачи, но когда уже известно какие запросы делать и в каком виде пароли посылать. Тут все посложнее оказалось. Дело еще усугубляется, что платформа 1С 8.1 )) Вот и хочу понять, реально сделать или нет.

(3) Вывел на форму страницу, но не могу достучаться до элементов страницы куда логи/пароль вводить.

Устроил бы полуручной вариант: авторизация руками 1 раз, а дальше уже код 1с работает в этой же сессии по сути.
12 Василий Алибабаевич
 
27.05.20
08:27
(11) "не могу достучаться до элементов страницы куда логи/пароль вводить."
Это тебе 1С что ли? Зачем "достучаться до элементов"? Ты код странички смотрел? :
Вот форма авторизации :
"
<form action="https://sso.moex.com/auth/realms/moex/login-actions/authenticate?code=uW8s5wQin-rNspukEI7deSRu7vh3izhsqhijuIkDVbI&execution=b43d1d76-147d-4241-8b4e-7f316b6723b8&client_id=NSDDATA&tab_id=0fzl8C49Tkc";

Вот элементы управления :
1.
<input autofocus type="text" name="credentials" placeholder="E-mail" class="form-control input-lg">
2. <input type="password" name="password" placeholder="Пароль" class="form-control input-lg">
3. <input type="hidden" name="CSRF" value="5z39/JTyGRMqYnr5t3Yv1JWlPQoi1l7csSfZkmWHpSE=">

Параметры передаются методом POST.
Заполни параметры "code", "execution", "client_id", "tab_id", "credentials", "password", "CSRF". И передай в запросе на сервер. Все.
И не нужно "на форме" ничего заполнять и ничем кликать. И даже форму открывать не нужно. Просто передай обработчику
"https://sso.moex.com/auth/realms/moex/login-actions/authenticate"; POST-запрос с парвильно заполненными параметрами. Фсьо.
13 Ivan093
 
27.05.20
08:30
(12) Спасибо, уже ближе!
Я пробовал через ПолеHTMLДокумента.Документ искать. Где-то находил пример такой авторизации...