RIA AuthenticationDomainService и CustomDomainService, предоставляемые через SOAP

У меня есть служба RIA (CustomDomainService), которая состоит из нескольких методов, требующих аутентификации. Аутентификация обеспечивается службой аутентификации (AuthenticationDomainService). Все работает из Silverlight, который является основным клиентом.

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

<domainServices>
  <endpoints>
    <add name="soap" type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory, 
                           Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, 
                           Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </endpoints>
</domainServices>

В приложении Windows Form, которое я создал для целей тестирования, я добавил ссылку на веб-службу SOAP.

Я могу войти в службу аутентификации без каких-либо ошибок, но я все еще получаю сообщение «Отказано в доступе» для любого вызова веб-метода в фактической службе:

var auth = new myAuth.AuthenticationDomainService();
auth.Login("username", "password", true, false, "");
var svc = new myService.myDomainService();
var res = svc.GetDataByCustomerCode("", DateTime.Now, true, DateTime.Now, true);

Я читал, что служба аутентификации должна возвращать некоторые файлы cookie, и их следует использовать в реальной бизнес-службе. Однако после вызова входа в систему я не вижу никаких файлов cookie в auth.CookieContainer. Кроме того, у меня нет свойства InnerChannel, которое я мог бы использовать для получения назначенного файла cookie.

Может ли кто-нибудь указать мне, что я делаю неправильно?

Заранее спасибо, С уважением, Г.


person Anthares    schedule 15.02.2011    source источник


Ответы (1)


Хорошо, я узнал, в чем проблема.

Я добавил две службы как «старые» веб-службы. Я удалил их и снова добавил, на этот раз как стандартные ссылки на службы.

После этого я смог получить «myServiceSoapClient» и «myAuthSoapClient», которые имеют свойство InnerChannel, это то, что мне нужно для получения файла cookie токена безопасности.

Получив файл cookie от службы аутентификации (после аутентификации) и установив его во второй службе (фактической службе), я смог получить доступ ко всем методам, к которым я должен был получить доступ.

Здоровья, Джанлука.

person Anthares    schedule 15.02.2011