2012-01-27 58 views
1

這是什麼意思,在高級別上指定一個WCF服務使用Windows身份驗證時的DNS身份?例如:使用Windows身份驗證具有DNS身份類型意味着什麼?

<configuration> 
<system.serviceModel> 
    <bindings> 
    <wsHttpBinding> 
     <binding name="WSHttpBinding_ICalculator_Windows"> 
     <security> 
      <message clientCredentialType="Windows"/> 
     </security> 
     </binding> 
    </wsHttpBinding> 
    </bindings> 
    <client> 
    <endpoint address="http://localhost:8003/servicemodelsamples/service/dnsidentity" 
     binding="wsHttpBinding" 
     bindingConfiguration="WSHttpBinding_ICalculator_Windows" 
     contract="ICalculator" 
     name="WSHttpBinding_ICalculator"> 
     <identity> 
     <dns value="contoso.com" /> 
     </identity> 
    </endpoint> 
    </client> 
</system.serviceModel> 
</configuration> 

This page說:

在這種情況下,當客戶端接收針對服務的Windows(Kerberos的)憑證,它預計值爲contoso.com。

我不太明白這一點。如何將服務的憑證值contoso.com?憑證是什麼意思?

它是否也驗證服務的實際DNS名稱確實是contoso.com?否則,什麼會阻止某人編寫一個稱爲contoso.com的流氓WCF服務?

回答

1

如果我沒有弄錯,contoso.com用於解析Kerberos的SPN。 SPN擡頭會是http/contoso.com:8003。此SPN將在Active Directory中映射到服務帳戶。 Kerberos票證將使用服務帳戶的憑證進行加密。

+1

如果您將應用程序池作爲「網絡服務」運行並在標準HTTP端口上運行服務,則SPN值將自動設置爲Kerberos身份驗證的正確值。如果您使用自定義服務帳戶和/或自定義端口,則需要由域管理員設置新的SPN。加入域的計算機的默認SPN設置是host/server和host/server-fqn。 「主機」服務具有HTTP和別名的別名。 – 2012-01-27 00:44:41

0

我意識到這是一個老問題,但我發現在一個使用tcp綁定與windows transport的自託管服務中,客戶端似乎並不尊重SpnIdentity設置,只有DnsIdentity設置。請點擊此處:wcf server authentication without certificates瞭解更多信息和/或評論。