Silverlight 4& WCF:Windows身份验证不断弹出

时间:2011-05-05 11:42:24

标签: wcf silverlight-4.0 iis-7 windows-authentication

我们已经开发了一个带有WCF服务的SL4应用程序。 SL应用程序和服务托管在IIS 7中,启用了Windows身份验证,其他所有内容都被禁用。 在wwroot我有这个客户端访问策略文件:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
 <cross-domain-access>
<policy>
  <allow-from http-request-headers="*">
    <domain uri="*"/>
  </allow-from>
  <grant-to>
    <resource path="/" include-subpaths="true"/>
  </grant-to>
</policy>

和这个跨域文件:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
 <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

silverlight xap的服务配置在客户端部分中如下所示:

 <binding name="SilverlightEndpoint" maxBufferSize="2147483647"
        maxReceivedMessageSize="2147483647">
      <security mode="TransportCredentialOnly" />
    </binding>
    ....
    <client>
  <endpoint address="http://app.domain.intern/MyService/MyService.svc"
      binding="basicHttpBinding" bindingConfiguration="SilverlightEndpoint"
      contract="[interface]" name="SilverlightEndpoint" />
     </client>

现在,当我在Internet Explorer中打开我的应用程序时,它会提示我输入我的Windows登录凭据,之后一切正常。在我的开发环境中,集成身份验证工作顺利,我无需在访问我的应用程序之前输入我的凭据。事实上,当我在客户端配置中有以下端点地址时,集成身份验证也在生产中工作:“http:// [servername] /MyService/MyService.svc”。 有谁知道如何恢复我的集成身份验证?

1 个答案:

答案 0 :(得分:1)

最后,我想出来了。 你真的没有必要在客户端配置中更改任何内容。我只是保留了端点地址“http:// [servername] /MyService/MyService.svc”并忽略了DNS别名。 问题出在浏览器安全设置上。在Internet Explorer 8中,我必须手动将dns别名添加到本地INTRANET区域中的可信站点(这很重要)。然后一切正常,无论我是使用服务器名称还是使用dns别名访问应用程序,验证弹出都消失了。