Создаю http соединение.
Получаю куки от /ServiceModel/AuthService.svc/Login
Вынимаю BPMCSRF
Создаю два заголовка: "BPMCSRF" и "Content-Type", "application/json;charset=utf-8"
Отправляю запрос к /0/rest/KmAccountIntegrationService/AccountImportRU
Получаю ответ 401. Что делаю не так?
Нравится
Возможно, кроме 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, такого заголовка нет.
Приходящие куки парсить и загонять строкой в заголовок Cookie. Еще отдельно BPMCSRF заголовок добавить, капс не важен
Terramorpher,
Добрый день! А не могли бы пожалуйста скинуть пример функций для обращения из 1С к bpm?
Павел, по синтаксису 1С лучше будет уточнить на форумах по этому языку. Порядок действий будет тот же, что и с другими языками: авторизация, получение кук, далее работа с основным сервисом.
Также, возможно, Вам подойдут готовые решения по интеграции с 1С от сторонних разработчиков:
Добрый день! Спасибо, но вопрос уже не актуален, разобрался сам))