Добрый день!
Изучаю интеграцию 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
Нравится
Дмитрий, добрый день!
Мы крайне не рекомендуем использовать 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;