2011-10-02 90 views

回答

1

從CredentialCache.DefaultCredential返回的NetworkCredential只是一個佔位符。如果您使用調試器查看它,您會發現它是SystemNetworkCredential類型的。內部API檢查此類型以查看是否應使用集成身份驗證。還有其他方法可以獲取當前用戶名(如WindowsIdentity.GetCurrent())。

編輯: 要爲WCF操作指定的模擬,這個屬性添加到執行合同的方法:

[OperationBehavior(Impersonation = ImpersonationOption.Required)] 
public void SomeMethod() 
{ 
    // do something here 
} 
+0

我想我應該指定這個開始,但我需要憑據傳遞給SharePoint以執行服務操作。我不只是想獲得用戶名。 – devlife

+1

好吧,然後繼續並使用DefaultCredentials與您的SharePoint請求。這應該沒問題。您可能遇到的問題是您尚未在WCF服務上啓用模擬。看到我的答案如何做到這一點。如果您的WCF服務和Sharepoint服務器位於不同的服務器上,則需要配置Kerberos,因爲NTLM不支持委派憑據。 –

+0

我真的不要使用模擬。我期望從CredentialCache.DefaultCredential獲得的憑據是應用程序池的標識(我已經驗證了該標識是正確的)。 – devlife

2

我不知道它是如何在您的服務器的一個工作?我希望你已經讀過這個 http://msdn.microsoft.com/en-us/library/system.net.credentialcache.defaultcredentials.aspx 但它清楚地表明「DefaultCredentials返回的ICredentials實例不能用於查看當前安全上下文的用戶名,密碼或域。」

+1

這很有趣。我可以在其他環境中看到域名和用戶名。我會給你一個閱讀,看看是否有任何東西彈出。 – devlife

相關問題