Не удается избавиться от всплывающего окна входа в приложение Silverlight на основе проверки подлинности Windows - PullRequest
2 голосов
/ 11 августа 2011

У меня есть приложение silverlight, которое извлекает данные из службы WCF, размещенной в службе Windows. Я включил проверку подлинности Windows в этой службе WCF, используя приведенную ниже в файле App.config.

 <system.servicemodel> 
<behaviors> 
  <endpointbehaviors> 
    <behavior name="webHttpBehavior"> 
      <webhttp /> 
    </behavior> 
  </endpointbehaviors> 
  <servicebehaviors> 
    <behavior name="defaultServiceBehavior"> 
      <servicemetadata httpgetenabled="true" /> 
      <servicedebug includeexceptiondetailinfaults="true" /> 
    </behavior> 
  </servicebehaviors> 
</behaviors> 
<bindings>            
  <basichttpbinding> 
    <binding name="winAuthBasicHttpBinding" opentimeout="05:00" sendtimeout="05:00"> 
      <security mode="TransportCredentialOnly"> 
        <transport clientcredentialtype="Windows" /> 
      </security> 
    </binding> 
  </basichttpbinding> 
</bindings> 
<servicehostingenvironment aspnetcompatibilityenabled="true" multiplesitebindingsenabled="true" /> 
<services> 
  <service behaviorconfiguration="defaultServiceBehavior" name="DataService.CrossDomainService"> 
    <endpoint address="" behaviorconfiguration="webHttpBehavior" binding="webHttpBinding" contract="DataService.ICrossDomainService"> 
      <identity> 
        <dns value="107.0.0.12" /> 
      </identity> 
    </endpoint> 
    <host> 
      <baseAddresses> 
        <add baseaddress="http://107.0.0.12:2035/" /> 
      </baseAddresses> 
    </host> 
  </service> 
  <service behaviorconfiguration="defaultServiceBehavior" name="DataService.NewDataService">         
    <endpoint address="" binding="basicHttpBinding" bindingconfiguration="winAuthBasicHttpBinding" contract="DataService.INewDataService"> 
      <identity> 
        <dns value="107.0.0.12" /> 
      </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    <host> 
      <baseAddresses> 
        <add baseaddress="http://107.0.0.12:2035/DataService/" /> 
      </baseAddresses> 
    </host> 
  </service> 
</services> 

</system.servicemodel>

Также я включил проверку подлинности Windows в моем файле Web.config, как показано ниже:

<system.web>
    <authentication mode="Windows" />
    <identity impersonate="true" />
</system.web>

В IIS мой веб-сайт работает под управлением ASP.NET Classic App Pool. Под аутентификацией включены Олицетворение (Аутентифицированный пользователь) и Аутентификация Windows.

Теперь проблема в том, что когда я получаю доступ к этому приложению Silverlight с помощью IE8 или Chrome, я получаю всплывающее окно с запросом имени пользователя / пароля. Даже после ввода данных и выбора опции «Запомнить мои учетные данные» он снова появляется во второй раз. После ввода данных во второй раз, мое приложение открывается и работает нормально. Но как только я закрываю браузер и снова открываю его, а теперь снова пытаюсь зайти на мой сайт, это всплывающее окно появляется дважды.

Так что в настоящее время каждый раз, когда мы открываем веб-сайт, нам приходится дважды иметь дело с всплывающим окном входа в систему, прежде чем мы сможем использовать приложение.

Есть идеи?

...