Имя: Пароль:
1C
1С v8
Отправка POST запроса на авторизацию
0 skela1c
 
09.06.17
09:22
Отправляю POST запрос по https для авторизации на сайте. Данные для подстановки беру из fiddler в "ресурс" подставляю
"/auth/login?wa=wsignin1.0&wtrealm=https%3a%2f%2fhttp://www.site.ru%2f&wctx=rm%3d0%26id%3d%26ru%3d%252f"; , в тело запрос логин и пароль. Но авторизация не проходит в результате запроса возвращается страниц авторизации, подскажите в чем может быть проблема?
1 dezss
 
09.06.17
09:27
(0) покажи как отправляешь запрос.
По идее надо так формировать соединение:
Новый HTTPСоединение(<Сервер>, <Порт>, <Пользователь>, <Пароль>, <Прокси>, <Таймаут>, <ЗащищенноеСоединение>, <ИспользоватьАутентификациюОС>)

, а потом уже слать в этом соединении сам запрос:
ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>)
Новый HTTPЗапрос(<АдресРесурса>, <Заголовки>)
2 skela1c
 
09.06.17
09:33
ssl1 = Новый ЗащищенноеСоединениеOpenSSL(
              Новый СертификатКлиентаWindows(СпособВыбораСертификатаWindows.Авто),
              Новый СертификатыУдостоверяющихЦентровWindows);


Соединение =  Новый HTTPСоединение("security.site.ru",,,,,,ssl1);

РесурсНаСервереАВ = "/auth/login?wa=wsignin1.0&wtrealm=https%3a%2f%2fhttp://www.site.ru%2f&wctx=rm%3d0%26id%3d%26ru%3d%252f";;
    КодАвторизации = "login=***&password=***";
    
    Заголовки = Новый Соответствие;    
    Заголовки.Вставить("Cookie", ИдентификаторСессии1);
    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded;");
    

    ЗапросАвторизации = Новый HTTPЗапрос(РесурсНаСервереАВ, Заголовки);
    ЗапросАвторизации.УстановитьТелоИзСтроки(КодАвторизации);
    
    РезультатАвторизации = Соединение.ОтправитьДляОбработки(ЗапросАвторизации);
3 dezss
 
09.06.17
09:47
(2) А пробовал логин/пароль передавать в Соединение, а не в заголовки запроса?
4 skela1c
 
09.06.17
09:49
(3) неа, а куда там поместить?
5 skela1c
 
09.06.17
09:52
подставил, но не прокатило
6 dezss
 
09.06.17
09:53
(5) что значит, не прокатило?
Что вернуло?
7 dezss
 
09.06.17
09:57
(5) Тут главный вопрос, что ты хочешь получить.
Авторизация нужна для чего-то конкретно или так, просто поиграться?
Вот это:
РесурсНаСервереАВ = "/auth/login?wa=wsignin1.0&wtrealm=https%3a%2f%2fhttp://www.site.ru%2f&wctx=rm%3d0%26id%3d%26ru%3d%252f";;;
по идее совсем не нужно, нужен конкретный ресурс, от которого ты хочешь получить ответ, а не просто авторизация.
8 skela1c
 
09.06.17
10:01
а как мне эту страницу найти, у меня в "action" формы это указано и в fiddler в запросе эта строка
9 dezss
 
09.06.17
10:04
(8) попробуй там залогиниться и посмотреть
10 skela1c
 
09.06.17
10:13
если я указываю в браузере "security.site.ru", подставляется security.site.ru/Auth/Login, я делаю запрос
к "security.site.ru", в ресурсе указываю "/Auth/Login", в ответ получаю {"status":"success","data":{"id":-1}}
11 dezss
 
09.06.17
10:16
(10) после этого что ты там делаешь, к каким ресурсам обращаешься?
12 skela1c
 
09.06.17
10:17
не понял вопрос
13 dezss
 
09.06.17
10:19
(12) что ты делаешь после авторизации?
Ты ж авторизуешься не просто так?
14 skela1c
 
09.06.17
10:21
ну да, я хочу искать по сайту товары
15 skela1c
 
09.06.17
10:37
ну и попасть в кабинет
16 dezss
 
09.06.17
10:42
(14) ну вот и смотри куда ты обращаешься, когда ищешь товары..и относительно этого делай запрос.
17 skela1c
 
09.06.17
10:44
(16) я авторизуюсь на security.site.ru, а ищу на site.ru
18 dezss
 
09.06.17
10:46
(17) после авторизации что возвращается в Location?
19 dezss
 
09.06.17
10:46
(17) Да и вообще, какой код ответа приходит?
20 skela1c
 
09.06.17
10:51
нету Location, если я авторисуюсь через браузер возвращается в куки такая вещь Set-Cookie: .STS-AUTH, как мне это в 1С получить?
21 dezss
 
09.06.17
11:07
(20) т.е. он после авторизации никуда не редиректит?
Странно, а в 1с какой ты результат получаешь после авторизации?
22 skela1c
 
09.06.17
11:35
после запроса мне не возвращается Set-Cookie:
23 dezss
 
09.06.17
11:39
(22) да покажи же, что тебе возвращается!!!
24 dezss
 
09.06.17
11:40
(22) РезультатАвторизации, что есть в нем?
25 skela1c
 
09.06.17
11:44
26 dezss
 
09.06.17
11:46
(25) а код состояния?
27 skela1c
 
09.06.17
11:47
200
28 dezss
 
09.06.17
11:49
(27) ну так он нормально отработал, значит.

РезультатАвторизации.ПолучитьТелоКакСтроку()

Что показывает?
29 Вафель
 
09.06.17
11:51
А так же что в РезультатАвторизации.Заголовки
30 dezss
 
09.06.17
11:52
(29) в (25)
31 skela1c
 
09.06.17
11:55
ПолучитьТелоКакСтроку() возвращает код страницы авторизации
32 skela1c
 
09.06.17
11:57
33 Вафель
 
09.06.17
11:58
может не туда шлешь запрос?
34 dezss
 
09.06.17
11:58
(31) так а когда сам через браузер логинишься, тебя редиректит на site.ru?
35 dezss
 
09.06.17
12:00
(31) не, тут так не угадаешь, это надо сидеть и играться. А сайта такого чета нету. Да и логина-пароля тоже.)
36 skela1c
 
09.06.17
12:05
это при авторизации через браузер
http://joxi.ru/DmBgMLjTXNDk2P
37 skela1c
 
09.06.17
12:07
а это из 1С
http://joxi.ru/n2YLqaotYjlBm6
38 dezss
 
09.06.17
12:09
(36) все таки спалился)
39 dezss
 
09.06.17
12:09
(37) а авторизация на site.ru не подходит?
40 skela1c
 
09.06.17
12:10
из браузера проходит
41 Вафель
 
09.06.17
12:10
а тело точно одинаковое передаешь?
42 Вафель
 
09.06.17
12:11
Я вижу контент ленгс разный
43 skela1c
 
09.06.17
12:11
да из fiddler взял
44 dezss
 
09.06.17
12:11
(40) а из 1с?
45 Вафель
 
09.06.17
12:11
и тайп тоже другой
46 skela1c
 
09.06.17
12:12
(42) это важно?
47 dezss
 
09.06.17
12:13
(45) тайп тот же.
48 skela1c
 
09.06.17
12:13
мне куки не возвращаются
49 dezss
 
09.06.17
12:14
(47) + тьфу, понял о чем речь..
50 Вафель
 
09.06.17
12:15
(46) Это значит ты разные данные передаешь
51 skela1c
 
09.06.17
12:19
52 Вафель
 
09.06.17
12:21
(51) А как же (42)
53 skela1c
 
09.06.17
12:31
делаю Заголовки.Вставить("Content-Length:", "33");
http://joxi.ru/EA4d3zxUdDelAb
54 skela1c
 
09.06.17
12:32
(53) все норм отправляется
55 Вафель
 
09.06.17
12:39
(53) Надо не заголовок править, а тело, чтоб длина была одинакова
56 skela1c
 
09.06.17
13:13
(55) так я логин и пароль в теле отправляю
57 skela1c
 
09.06.17
14:00
запрос получилось отправить, а теперь бы ид сессии вернуть
58 skela1c
 
09.06.17
14:41
после выполнения не возвращается Set-Cookie
59 Вафель
 
09.06.17
14:44
Тебе удалось добиться того что длина одинаковая?
60 skela1c
 
09.06.17
14:45
да, я отправляю одинаковые заголовки, но получаю разные
61 skela1c
 
09.06.17
14:53
http://joxi.ru/12Mg3YoT3MayrJ запрос с fiddler
62 Вафель
 
09.06.17
14:55
(61) покажи из 1с, где 33
63 skela1c
 
09.06.17
14:55
64 Вафель
 
09.06.17
14:55
ну и заголовки то ты передаешь далеко не все
65 Вафель
 
09.06.17
14:57
ну тогда хз
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший