Проблема с веб-сервисом, доступным без авторизации
Добрый день, Коллеги!
Изучили ряд тем на сообществе по данному вопросу и попробовали воспроизвести кейс из данной темы:
https://community.terrasoft.ru/questions/anonimnaa-autentifikacia-vnesn…
Сделали всё в точности как описано в примере, включая настройку web-конфигов.
Сервис:
namespace Terrasoft.Configuration { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.Linq; using System.Security; using System.ServiceModel; using System.ServiceModel.Web; using System.ServiceModel.Activation; using System.Web; using Terrasoft; using Terrasoft.Common; using Terrasoft.Common.Json; using Terrasoft.Core; using Terrasoft.Core.DB; using Terrasoft.Core.Entities; using Terrasoft.Core.Store; using Newtonsoft.Json; using Terrasoft.Web.Common; [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class UsrGreetingService : BaseService //,System.Web.SessionState.IReadOnlySessionState { [OperationContract] [WebInvoke(Method = "GET", UriTemplate = "Hello", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] public string TestHello() { return "Hello!!!!!!!!!!!!!!!!!"; } [OperationContract] [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Xml)] public string TestHelloXml() { return "Hello!!!!!!!!!!!!!!!!!"; } [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)] public string TestPostJson() { return "Hello!!!!!!!!!!!!!!!!!"; } // private UserConnection _userConnection; /// <summary> /// </summary> // private UserConnection UserConnection { // get { // return _userConnection ?? (_userConnection = HttpContext.Current.Session["UserConnection"] as UserConnection); // } // } } }
В результате попробовали отправить запрос через POSTMAN
1) Если указать метод GET без авторизационных Cookie, то всё работает
Как пример можно получить результат запроса по ссылке:
http://93.188.21.108:2022/0/ServiceModel/UsrGreetingService.svc/Hello
2) Указываем метод POST без авторизационных Cookie, то получаем 403:
Если же добавить к запросу(метод POST) авторизационные Cookie, то всё работает...
Коллеги, прошу подсказать, что именно делаем не так?
Нравится
Добрый день,
Проверьте включена ли на сайте CSRF-защита. В внешнем и внутреннем Web.config есть атрибут UseCsrfToken, содержит значение true то можно поступить следующим образом:
1. Изменить значение UseCsrfToken в Web.config и WebApp/Web.config на
<add key="UseCsrfToken" value="false" />
2. В хедере запроса отправлять Csrf-токен. Следующим образов (в случае безавторизационного сервиса, авторизацитонные куки можно не отправлять):
Tsopa,
Спасибо большое! Решили проблему получением и отправкой
авторизацитонных куков!