2011-05-05 51 views
3

我們使用WCF服務開發了SL4應用程序。 SL應用程序和服務託管在IIS 7中,並且啓用了Windows身份驗證,並禁用了其他所有功能。 在wwroot我有這樣的客戶端訪問策略文件:Silverlight 4&WCF:Windows身份驗證不斷彈出

<?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> 

現在w當我在Internet Explorer中打開我的應用程序時,它提示我輸入我的Windows登錄憑據,之後,一切正常。在我的開發環境中,集成的身份驗證工作並不困難,在訪問我的應用程序之前,我不必輸入憑證。實際上,當我在客戶端配置中有以下端點地址時,集成身份驗證在生產中也起作用:「http:// [servername] /MyService/MyService.svc」。 有誰知道我可以如何獲得我的集成身份驗證?

回答

1

最後,我明白了這一點。 你真的不需要改變客戶端配置中的任何東西。我只保留了端點地址「http:// [servername] /MyService/MyService.svc」,並忽略了DNS別名。 問題出在瀏覽器安全設置。在Internet Explorer 8中,我必須手動將dns別名添加到本地INTRANET區域中的可信站點(這很重要)。然後,一切工作正常,無論我訪問應用程序的服務器名稱或DNS別名和身份驗證彈出消失。

+0

非常感謝!我花了數小時試圖找出這個問題。在Chrome中,我從未被提示輸入登錄憑據。在IE中訪問我的Silverlight頁面後,系統提示您輸入登錄憑據。將我的服務器別名添加到本地Intranet區域後,該網站開始在Chrome中工作。萬歲! – 2012-02-07 21:16:30