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

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
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот