Вопрос

Http запрос из 1С к bpm

Создаю http соединение.

Получаю куки от /ServiceModel/AuthService.svc/Login

Вынимаю BPMCSRF

Создаю два заголовка: "BPMCSRF" и "Content-Type", "application/json;charset=utf-8"

Отправляю запрос к  /0/rest/KmAccountIntegrationService/AccountImportRU

Получаю ответ  401. Что делаю не так?

У меня такой же вопрос

8 комментариев

Возможно, кроме BPMCSRF забыли передать обычную авторизационную куку. Примеры кода для авторизации есть тут и в соседних статьях, но они не на 1С.

Можно сравнить нормально проходящую авторизацию и обращение к веб-сервису при помощи браузера с неудачной попыткой из 1С при помощи Fiddler, поверить, в чём отличие.

Спасибо за ответ. Обычная авторизационная кука целиком передается через Json в теле запроса или в заголовке Cookie строкой или иначе?

Я обычно не парюсь, и все, что получаю от авторизации использую в последующих запросах

ServicePointManager.ServerCertificateValidationCallback = (s, cert, chain, ssl) => true;
var req = WebRequest.Create(string.Format("{0}/0/rest/{1}/{2}", url, service, metod)) as HttpWebRequest;
req.CookieContainer = AuthCookie;
req.Method = "POST";
req.ContentType = "application/json";
 
CookieCollection cookieCollection = AuthCookie.GetCookies(new Uri(url));
string csrfToken = cookieCollection["BPMCSRF"].Value;
req.Headers.Add("BPMCSRF", csrfToken);

На практике там обычно 4 параметра, все кидаем через заголовки.

Варфоломеев Данила, 

Отправляю запрос

Ответ

 

 

Смущает «Authorization: Basic» в запросе на скриншоте. Ведь «Basic» и «Forms (Cookies)» — это два разных способа аутентификации. И если залогиниться в систему в браузере и посылать запросы к OData, такого заголовка нет.

Взлетел

Спасибо, очень помогли

Так в чём разница, в капсе у BPMCSRF?

Приходящие куки парсить и загонять строкой в заголовок Cookie. Еще отдельно BPMCSRF заголовок добавить, капс не важен

Войдите или зарегистрируйтесь, чтобы комментировать