Добрый день!

Интересует несколько вопросов, связанных с использованием web-сервисов:

1) Доступна ли  basic авторизация  для ProcessEngineService.svc а так же для кастомных конфигурационных сервисов? 

2) И если 1- да, то как правильно передать параметры авторизации?

Использую вебсервис так:

http://site/0/ServiceModel/ProcessEngineService.svc/RunProcess



{"parameterValues":

[

{"name":"Title","value":"TestValue1"},

{"name":"Description","value":"TestValue2"},

{"name":"Action","value":"TestValue3"}

],

"schemaUId":"AF7E3F40-0EFA-431A-94AA-4DEEFFE16E59",

"schemaName":"UsrCaseIntegrationProcess"}

 

Нравится

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

С авторизацией разобрался

Появился новый вопрос - как вернуть результат выполнения процесса. Как проавильно прописать в POST запрос ResultParameterName

Бакалов Павел Вячеславович,

Убедитесь, что процесс компилируемый, потому что получить значение ResultParameterName можно только для компилируемого процесса.

Примеры запроса есть тут: https://academy.terrasoft.ru/documents/technic-sdk/7-12/web-servis-proc…

 

Tsopa,

Да, процесс компилируемый. Руководствуясь данной инструкции удалось выполнить процесс, передать параметры и получить результат используя метод GET. Но в инструкции написано, что так же можно использовать метод POST. Но у меня не вышло это сделать - процесс выполнился, но параметры в него не попали и результат соответственно не вернулся. Нет ли примеров POST запросов к методу Execute ?

Зверев Александр,

Александр, спасибо конечно, но это метод RunProcess, который я привел в самом начале своего поста. А меня интересует вызов метода Execute, так как в нем есть возможность вернуть результат выполнения процесса в виде параметра процесса.

Бакалов Павел Вячеславович,

POST запрос к методу Execute  не рекомендуется отправлять, поскольку  операция устарела, вместо этого стоит отправлять запрос /RunProcess.

Но если необходимо отправить POST запрос к Execute это можно сделать следующим образом: 

schemaName - эта название схемы процесса, который необходимо запустить

https://[site]/0/ServiceModel/ProcessEngineService.svc/[schemaName]/Execute

пример Header: 

Content-Type: application/json

BPMCSRF: BgsjByc16fsEZfuAr/CxDO

Cookie: BPMLOADER=vuhtzmo2wh2mxgb1amggorf2; .ASPXAUTH=FFF4F....; BPMCSRF=BgsjByc16fsEZfuAr/CxDO;

пример body: 

{}

 

как Вы решили проблему Basic авторизации?

См. тут. А вообще, базовую не рекомендуют, вот её сравнение с Cookies.

Показать все комментарии

Добрый день!

Изучаю интеграцию BpmOnline с внешними приложениями. Создал тестовый wcf сервис. Кидаю на него запросы через fiddler. Авторизация через AuthService работает корректно, запросы уходят и сервис отвечает. Однако, запросы с Basic авторизацией до сервиса не долетают, возвращается ошибка 302 Found. CSRF- шифрование в Web-конфиге отключено. Подскажите, как добиться корректного ответа от сервиса. Вот полный текст запроса и ответа:

 

POST http://localhost:89/0/ServiceModel/NewWebService.svc/auth HTTP/1.1

Content-Type: text/xml

Authorization: Basic U3VwZXJ2aXNvcjpTdXBlcnZpc29y

Host: localhost:89

Content-Length: 191

Expect: 100-continue

Connection: Keep-Alive

<?xml version="1.0"?>



  Ivan|29|3years|C#

 

HTTP/1.1 302 Found

Cache-Control: private

Transfer-Encoding: chunked

Content-Type: text/html; charset=utf-8

Location: /0/ServiceModel/NewWebService.svc/auth

Server: Microsoft-IIS/10.0

X-AspNet-Version: 4.0.30319

Set-Cookie: BPMSESSIONID=1afcupzm3ekdmhknqytxkak4; path=/0; HttpOnly

Set-Cookie: .ASPXAUTH=; expires=Mon, 11-Oct-1999 19:00:00 GMT; path=/; HttpOnly

X-Powered-By: ASP.NET

X-Frame-Options: SAMEORIGIN

Date: Thu, 01 Feb 2018 06:27:58 GMT

9b

Object moved

Object moved to here.


0

 

Нравится

3 комментария

Дмитрий, добрый день!

Мы крайне не рекомендуем использовать basic аутентификацию, так как она имеет ряд недостатков: 

- Только один уровень защиты – использование SSL/TLS;

- Учетные данные передаются на каждый запрос, что значительно расширяет временные возможности атаки;

- Нет политики устаревания аутентификационных данных, только замена на клиенте и сервере;

- Данные аутентификации должны все время хранится в памяти клиента (например, браузера), что расширяет возможности атаки;

- Она не рекомендуется для аутентификации в приложениях https://www.owasp.org/index.php/Basic_Authentication

Maksym Naumovets,

Максим, а как в таком случае внутри метода сервиса получить UserConnection?

Дмитри, вот пример создания конфигурационного сервиса с академии.

или же использовав:

 

_userConnection = HttpContext.Current.Session["UserConnection"] as UserConnection;

var appConnection = HttpContext.Current.Application["AppConnection"] as AppConnection;

предварительно подключив using Terrasoft.Core;

 

Показать все комментарии

Здравствуйте.

Я заметил, что к OData в BPM можно обращаться используя basic authentication в заголовке запроса. Как можно сделать тоже самое для своего веб-сервиса? Я попробовал сделать сам, получая заголовок запроса, вытаскивая от туда данные basic authentication и пытался через класс AuthService сделать авторизацию, но у меня не получилось, т.к. в методе Login происходила ошибка.

Нравится

2 комментария

Спасибо, помощь больше не нужна, разобрался сам. Если ,вдруг, кому нужно, то авторизовать пользователя можно вызвав метод RecreateUserConnection у класса SessionHelper и передав ему логин, пароль и др. данные.

Колебянов Виталий Романович,

то есть внутри вашего кастомного сервиса вы написали метод авторизации и при вызове этого метода происходит авторизация? система не говорит что вы не авторизованы для вызова сервиса?

Показать все комментарии