2012-04-02 29 views
6

我有一個客戶使用上的兩個端點以下連接到WCF服務:錯誤連接WCF服務與Windows安全

<security mode="Message"> 
    <message clientCredentialType="Windows" /> 
</security> 

此作品在我的開發環境(包括本地運行),談判工作正常。當我把它推到測試環境我得到以下信息:「://主機/服務HTTP」爲目標 「的http://主機/服務

SOAP安全協商失敗。有關更多詳情,請參閱內部例外

內部異常:

System.ComponentModel.Win32Exception:安全支持提供 接口(SSPI)身份驗證失敗。服務器可能未在身份爲「主機/服務器名稱。域」的帳戶中運行 。如果 服務器正在服務帳戶(例如網絡服務)中運行,則 將該帳戶的ServicePrincipalName指定爲該服務器的 EndpointAddress中的標識。如果服務器以用戶 帳戶運行,請將該帳戶的UserPrincipalName指定爲 服務器的EndpointAddress中的標識。

在隨機更改屬性並且通常搞亂之後,唯一可以使其工作的方法是更改​​服務的應用程序池以使用LocalSystem作爲標識。這隨後導致系統管理員擁有小貓,而我不能繼續這樣做。

任何人都可以解釋爲什麼會發生這種情況?客戶端Windows帳戶和AppPool的身份都位於同一個域中。該服務正在同一個域中的服務器上運行。

回答

2

如果身份驗證適用於LocalSystem而不是域帳戶,則可能是因爲缺少域帳戶的SPN。本頁面提供了一些有關配置服務運行身份的背景信息:http://msdn.microsoft.com/en-us/library/bb628618.aspx

+0

只是一個想法,如果機器是從模板(即克隆)作爲VM設置的,情況可能如此嗎? – 2012-04-02 12:16:54

+0

我不確定被克隆的機器是否會影響到這一點。 AFAIK要使用Kerberos,服務標識需要有效的SPN/UPN。 – 2012-04-02 14:47:52