有沒有人有任何想法知道爲什麼CredentialCache.DefaultCredential會返回一個ICredential實例,其域,用戶名和密碼爲空字符串?我在IIS 7.5上運行WCF服務。它在一臺服務器上正常工作,但從未在另一臺服務器上工作我已驗證的IIS應用程序啓用了Windows身份驗證....爲什麼CredentialCache.DefaultCredential包含域,用戶名和密碼的空字符串
這裏是它如何被使用:
有沒有人有任何想法知道爲什麼CredentialCache.DefaultCredential會返回一個ICredential實例,其域,用戶名和密碼爲空字符串?我在IIS 7.5上運行WCF服務。它在一臺服務器上正常工作,但從未在另一臺服務器上工作我已驗證的IIS應用程序啓用了Windows身份驗證....爲什麼CredentialCache.DefaultCredential包含域,用戶名和密碼的空字符串
這裏是它如何被使用:
從CredentialCache.DefaultCredential返回的NetworkCredential只是一個佔位符。如果您使用調試器查看它,您會發現它是SystemNetworkCredential類型的。內部API檢查此類型以查看是否應使用集成身份驗證。還有其他方法可以獲取當前用戶名(如WindowsIdentity.GetCurrent())。
編輯: 要爲WCF操作指定的模擬,這個屬性添加到執行合同的方法:
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public void SomeMethod()
{
// do something here
}
我不知道它是如何在您的服務器的一個工作?我希望你已經讀過這個 http://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultcredentials.aspx 但它清楚地表明「DefaultCredentials返回的ICredentials實例不能用於查看當前安全上下文的用戶名,密碼或域。」
這很有趣。我可以在其他環境中看到域名和用戶名。我會給你一個閱讀,看看是否有任何東西彈出。 – devlife
我想我應該指定這個開始,但我需要憑據傳遞給SharePoint以執行服務操作。我不只是想獲得用戶名。 – devlife
好吧,然後繼續並使用DefaultCredentials與您的SharePoint請求。這應該沒問題。您可能遇到的問題是您尚未在WCF服務上啓用模擬。看到我的答案如何做到這一點。如果您的WCF服務和Sharepoint服務器位於不同的服務器上,則需要配置Kerberos,因爲NTLM不支持委派憑據。 –
我真的不要使用模擬。我期望從CredentialCache.DefaultCredential獲得的憑據是應用程序池的標識(我已經驗證了該標識是正確的)。 – devlife