Basic авторизация запроса к сервису

Добрый день!

Изучаю интеграцию 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;

 

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