我们已经开发了一个带有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”。 有谁知道如何恢复我的集成身份验证?
答案 0 :(得分:1)
最后,我想出来了。 你真的没有必要在客户端配置中更改任何内容。我只是保留了端点地址“http:// [servername] /MyService/MyService.svc”并忽略了DNS别名。 问题出在浏览器安全设置上。在Internet Explorer 8中,我必须手动将dns别名添加到本地INTRANET区域中的可信站点(这很重要)。然后一切正常,无论我是使用服务器名称还是使用dns别名访问应用程序,验证弹出都消失了。