Не работает перенаправление при использовании защищенного соединения

1. wiseowl 17.10.17 09:24 Сейчас в теме
Помогите с вопросом...Пишу get запрос (текст ниже), при использовании защищенного сертификата не происходит перенаправление по ссылке, которая указана в redirect_uri, если использовать http, то происходит постоянное перенаправление на тот же адрес, но уже с https соединением.
При проверке в браузере, перенаправление происходит и все нормально. Как можно решить эту проблему?

При перенаправлении на office.com я должна в строке получить параметр "code", который потом хочу использовать для получения токена приложения.
В Set-Cookie есть такое поле как "buid" это одно и тоже? Если да, то в принципе я могу использовать его в качестве кода авторизации, но проблему с перенаправлением все равно надо как то решить...

Адрес="login.microsoftonline.com";
АдресРесурса="&response_mode=query&response_type=code&redire­ct_uri=https%3A%2F%2Fwww.office.com%2F&nux=1&msafed=0";
client_id="3bf6d724-6dae-4177-a437-cd1e20619bd8";
//Если НЕ (AccessToken = "" ИЛИ RefreshToken = "" ИЛИ RefreshTime = Дата(1, 1, 1)) Тогда
//		
//		Возврат;
//		
//	КонецЕсли;

 	
	ssl = Новый ЗащищенноеСоединениеOpenSSL();
				//Новый СертификатКлиентаWindows(
				// СпособВыбораСертификатаWindows.Выбирать),
				//Новый СертификатыУдостоверяющихЦентровWindows());   
                         
	Соединение = Новый HTTPСоединение(
                            Адрес, //"хххххх.bitrix24.ru",
							, // порт
							, // пользователь
							, // пароль
							, // прокси
                            , // таймаут в секундах
                           ssl  // защищенное HTTPS соединение
                        );
						
						
	//Заголовки = Новый Соответствие;
	
	Запрос = Новый HTTPЗапрос("/common/OAuth2/Authorize?client_id=" + client_id + АдресРесурса);					
	Ответ = Соединение.Получить(Запрос);
	
	 Сообщить (Ответ.КодСостояния);	  
	АдресРесурса = Ответ.Заголовки.Получить("Location");
	Сообщить (АдресРесурса);
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 17.10.17 13:26 Сейчас в теме
(1) опишите для чего нужно перенаправление в вашей задаче ?
3. wiseowl 17.10.17 13:47 Сейчас в теме
(2)Мне нужно получить токен приложения чтобы потом использовать его в REST API.
Для этого я пыталась сделать все тоже самое что описано здесь.. https://infostart.ru/public/574117/ но не получается...

прикладываю полный код процедуры
Адрес="login.microsoftonline.com";
//АдресРесурса="&response_mode=query&response_type=code&redi­rect_uri=https%3A%2F%2Fwww.office.com%2F&nux=1&msafed=0";
АдресРесурса="client_id=3bf6d724-6dae-4177-a437-cd1e20619bd8&response_type=code&redirect_uri=https%3A%2F%2Fw­ww.office.com%2F&response_mode=query&scope=3bf6d724-6dae-4177-a437-cd1e20619bd8%20offline_access&state=arbitrary_data_you_can_r­eceive_in_the_response";
client_id="3bf6d724-6dae-4177-a437-cd1e20619bd8";
//Если НЕ (AccessToken = "" ИЛИ RefreshToken = "" ИЛИ RefreshTime = Дата(1, 1, 1)) Тогда
//		
//		Возврат;
//		
//	КонецЕсли;

 	
	ssl = Новый ЗащищенноеСоединениеOpenSSL();
				//Новый СертификатКлиентаWindows(
				//                СпособВыбораСертификатаWindows.Выбирать),
				//Новый СертификатыУдостоверяющихЦентровWindows());   
                         
	Соединение = Новый HTTPСоединение(
                            Адрес, //"хххххх.bitrix24.ru",
							, // порт
							"пользователь", // пользователь
							"пароль", // пароль
							, // прокси
                            , // таймаут в секундах
                           ssl  // защищенное HTTPS соединение
                        );
						
						
	Заголовки = Новый Соответствие;
	
	Запрос = Новый HTTPЗапрос("/common/OAuth2/Authorize?client_id=" + client_id + АдресРесурса);
	Ответ = Соединение.Получить(Запрос);	
	 Сообщить (Ответ.КодСостояния);	  
	АдресРесурса = Ответ.Заголовки.Получить("Location");
	Сообщить (АдресРесурса);
	Сообщить (Ответ.ПолучитьТелоКакСтроку());
	Сообщить(Ответ.Заголовки.Получить("Set-Cookie"));
	НашаСтрока=Ответ.Заголовки.Получить("Set-Cookie");
Позиция=Найти(НашаСтрока,";"); 
НашаСтрока=Лев(НашаСтрока,Позиция-1);
Позиция=Найти(НашаСтрока,"=");
Код=Сред(НашаСтрока,Позиция+1,СтрДлина(НашаСтрока));
Сообщить(Код);

 //если нас переадрессовали
    Если Ответ.КодСостояния = 200 Тогда
    	
    	////в Location взять code
    	//Сообщить (Ответ.Заголовки.Получить("Location"));
    	//Параметры = ПолучитьПараметрыИзGetСтроки(Ответ.Заголовки.Получить("Location"));
    	Cookie = Ответ.Заголовки.Получить("Set-Cookie");
    	//Код = Неопределено;
    	//
    	//
    	//Если Параметры.Свойство("code", Код) Тогда
    		
    		// используя Код получаем access_token и refresh_token
    		
    		Соединение = Новый HTTPСоединение(
                            Адрес,
    						, // порт
    						, // пользователь
    						, // пароль
    						, // прокси
                            5, // таймаут в секундах
                            ssl// защищенное HTTPS соединение
                        );
    					
    					
    					
    		Запрос.АдресРесурса	= "/common/OAuth2/Token" + ПараметрыАвторизацииВСтроке(Код);	
    		Запрос.Заголовки.Вставить("Cookie", Cookie);
    		Запрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");

    					Ответ = Соединение.Получить(Запрос);
    				Сообщить (Ответ.КодСостояния);
    				
    		//Если Ответ.КодСостояния <> 200 Тогда
    		//	
    		//	ВызватьИсключение "Ошибка при получении access_token"; 
    		//	
    		//Иначе
    		Сообщить (Ответ.ПолучитьТелоКакСтроку());
    		
				//// разобрать полученный json
				//json = Ответ.ПолучитьТелоКакСтроку();
				//
				//
				//Чтение = Новый ЧтениеJSON;
				//Чтение.УстановитьСтроку(json);
				//ОтветСтруктура = ПрочитатьJSON(Чтение);
				//
				//// сохраняю параметры подключения
				//AccessToken  = ОтветСтруктура.access_token;
				//RefreshToken = ОтветСтруктура.refresh_token;
				//RefreshTime  = ТекущаяДата() + ОтветСтруктура.expires_in;
				
			
			КонецЕсли;
			
			
		//	
		//Иначе
		//	
		//	ВызватьИсключение "Ошибка при подключении, нет параметра code";
		//	
		//КонецЕсли;
		
		
	//КонецЕсли;
Показать
4. Ziggurat 50 17.10.17 13:54 Сейчас в теме
ssl = Новый ЗащищенноеСоединениеOpenSSL();
//Новый СертификатКлиентаWindows(
// СпособВыбораСертификатаWindows.Выбирать),
//Новый СертификатыУдостоверяющихЦентровWindows());

С раскомментированными строками тоже не работает?
5. wiseowl 17.10.17 14:08 Сейчас в теме
(4) Там было без разницы закоментировано или нет, я немного изменила параметры, теперь открывает страницу, но не авторизовывается, дословный перевод страницы с ошибкой такой

"Мы не можем вас подписать
Ваш браузер в настоящий момент настроен на блокировку файлов cookie. Вы должны разрешить куки-файлы использовать эту услугу.

Куки-файлы - это небольшие текстовые файлы, хранящиеся на вашем компьютере, которые сообщают нам, когда вы вошли в систему. Чтобы узнать, как разрешать куки-файлы, ознакомьтесь с интерактивной справкой в ​​своем веб-браузере"

Но я же из 1С делаю, как это можно исправить?..
6. spacecraft 17.10.17 14:16 Сейчас в теме
(5) смотреть в сторону параметров HTTPЗапрос. Точнее Заголовки.
Для примера: https://infostart.ru/public/255881/
8. Ziggurat 50 18.10.17 10:57 Сейчас в теме
(5) У меня защищенное подключение не запускалось без указания сертификатов, т.е. при реализации как у Вас зайти на сайт не удавалось. (6) всё верно пишет, если есть возможность, посмотрите заголовки, отправляемые браузером во время авторизации, можно, например, в мозилле и установите такие же заголовки.
7. wiseowl 17.10.17 14:16 Сейчас в теме
(4) https://drive.google.com/file/d/0B9KMDasnCTGZVVJUVVZxck1HU00/view?usp=sharing
вот ссылка на мою обработку, может так проще будет....
9. YanTsys 12 18.10.17 11:01 Сейчас в теме
Щедрость вознаграждения прямо таки бьет все рекорды :)
10. wiseowl 18.10.17 13:49 Сейчас в теме
(9) да я вообще случайно поставила :D
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

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

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день