2011-07-26 53 views
3

即使匿名訪問的WCF服務的虛擬目錄啓用和集成身份驗證被禁用,我仍然得到錯誤:使用匿名身份驗證調用HTTPS WCF服務?

The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'.

這是客戶端綁定配置的安全定義是什麼樣子:

<security mode="Transport"> 
    <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
    <message clientCredentialType="None" negotiateServiceCredential="false" /> 
</security> 

和端點定義:

<endpoint address="https://url.com/Service.svc" 
      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService" 
      contract="IService" name="WSHttpBinding_IService"> 
      <identity> 
       <servicePrincipalName value="spn" /> 
      </identity> 
</endpoint> 

我已經嘗試添加:

client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation; 

但它似乎沒有任何效果。

IIS上有什麼需要改變的東西嗎?

[編輯]

服務配置:

<behaviors> 
    <endpointBehaviors> 
     <behavior name="defaultBehavior"/> 
    </endpointBehaviors> 
    <serviceBehaviors> 
     <behavior name="metadataSupport"> 
     <serviceMetadata httpsGetEnabled="true" httpsGetUrl=""/> 
     <useRequestHeadersForMetadataAddress> 
      <defaultPorts> 
       <add scheme="https" port="443" /> 
      </defaultPorts> 
     </useRequestHeadersForMetadataAddress> 
     </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service name="ServiceLibrary.Service" 
      behaviorConfiguration="metadataSupport"> 
     <endpoint address="" 
       binding="wsHttpBinding" 
       bindingConfiguration="wsSecureBinding" 
       contract="ServiceLibrary.IService"/> 
     <endpoint address="mex" 
       binding="wsHttpBinding" 
       bindingConfiguration="wsSecureBinding" 
       name="mexHttps" 
       contract="IMetadataExchange" /> 
    </service> 
</services> 
<bindings> 
    <wsHttpBinding> 
     <binding name="wsSecureBinding"> 
     <security mode="Transport"/> 
     </binding> 
    </wsHttpBinding> 
</bindings> 
+0

你在服務端使用什麼綁定配置? –

+0

我已經添加了服務配置 – ilitirit

回答

6

修改你的綁定配置的服務:

<bindings> 
    <wsHttpBinding> 
     <binding name="wsSecureBinding"> 
      <security mode="Transport"> 
       <transport clientCredentialType="None" /> 
      </security> 
     </binding> 
    </wsHttpBinding> 
</bindings> 

它在默認情況下預計Windows憑據。