Вопрос

Ссылка на конфигурационный сервис в письме. Ошибка 401

Добрый день!

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

http://xxx:83/0/rest/UsrLogisticVariantsService/ApproveLogistic/330ed31…

если пользователь не авторизован  в системе, то выходит ошибка .
 

401 - Unauthorized: Access is denied due to invalid credentials.

если авторизован, то ссылка отрабатывает корректно.

можно ли как-то настроить систему так, чтобы 
1) прокидывало на страницу авторизации, как в случае со ссылкой на карточку записи

2) возможно есть возможность явно прописать учетные данные для работы данного сервиса

 

Нравится

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

Добрый день.

К сожалению, реализовать ваш кейс средствами системы в данный момент не получится. Мы передали пожелание на доработку разработчикам ядра. В качестве альтернативы можем предложить либо просто сделать ваш сервис анонимным(доступным без авторизации), либо также добавить необходимые проверки в его методах.

а можно делать анонимными отдельные сервисы внутри системы?
это же конфигурационный сервис, его кодом просто внутри можно настроить? потому что в iis другая настройка стоит 

Можно, но для этого нужна дополнительная настройка. Подобным образом реализовано получение обратной связи от пользователей по решенным обращениям. Ниже инструкция по настройке подобного сервиса. Также мы сообщили команде Академии об отсутствии данной информации на наших обучающих ресурсах, они добавят статью в ближайшее время.

.\Terrasoft.WebApp\ServiceModel\http\services.config
                add section:
                               <service name="Terrasoft.Configuration.MandrillService.MandrillService">
                                               <endpoint name="MandrillServiceEndPoint"
                                                               address=""
                                                               binding="webHttpBinding"
                                                               behaviorConfiguration="RestServiceBehavior"
                                                               bindingNamespace="http://Terrasoft.WebApp.ServiceModel"
                                                               contract="Terrasoft.Configuration.MandrillService.MandrillService" />
                               </service>

 
.\Terrasoft.WebApp\ServiceModel\https\services.config
                add section:
                               <service name="Terrasoft.Configuration.MandrillService.MandrillService">
                                               <endpoint name="MandrillServiceEndPoint"
                                                               address=""
                                                               binding="webHttpBinding"
                                                               behaviorConfiguration="RestServiceBehavior"
                                                               bindingNamespace="http://Terrasoft.WebApp.ServiceModel"
                                                               contract="Terrasoft.Configuration.MandrillService.MandrillService" />
                               </service>

 
.\Terrasoft.WebApp\Web.config
                "ServiceModel/MandrillService.svc" append into <add key="AllowedLocations" value="
                               exsample: <add key="AllowedLocations" value="ServiceModel/MandrillService.svc" />
                add section:
                               <configuration>
                                               <location path="ServiceModel/MandrillService.svc">
                                                               <system.web>
                                                                              <authorization>
                                                                                              <allow users="*" />
                                                                              </authorization>
                                                                              <httpRuntime requestValidationMode="2.0" />
                                                                              <pages validateRequest="false" />
                                                               </system.web>
                                               </location>

Terrasoft.WebApp\ServiceModel
                create file MandrillService.svc
                paste text:
                               <%@ ServiceHost Language="C#" Debug="true" Service="Terrasoft.Configuration.MandrillService.MandrillService" %>

Больше спасибо! буду пробовать

Кот Владимир Владимирович,

нужно после настройки что-то делать?
какой тип аутентификации должен стоять в IIS? 
iis и redis перезапускала - ошибка 401 сохраняется/
ошибка есть и для CaseRatingManagementService. 
в конфиге пробовала и   <allow users="?" /> и <allow users="*" />

 

поменяла и файл C:\Windows\System32\inetsrv\config\applicationHost.config.
значение 
      <sectionGroup name="authentication">
                    <section name="anonymousAuthentication" overrideModeDefault="Allow" />

 

Воможно у вас не включена анонимная аутентификация в IIS? Если включена и сервис настроен согласно инструкции, напишите, пожалуйста, письма на support@terrasoft.ru со ссылкой на это обсуждение и доступом к вашей среде чтобы мы могли отладить проблему.

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