2011-06-24 55 views
1

我有一個使用窗體身份驗證的ASP.NET應用程序。ASP.NET窗體身份驗證和調用Web服務

我需要調用的Sharepoint search.asmx Web服務從網絡檢索滿足搜索條件的文件列表(有一個很好的理由讓我這樣做的Sharepoint之外)

我不知道我需要通過search.asmx的安全信息。我已經試過: queryService.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials queryService.ClientCredentials.Windows.AllowedImpersonationLevel = Security.Principal.TokenImpersonationLevel.Impersonation

哪位在我的開發環境作爲我的工作用戶有權訪問正在訪問的文件共享Sharepoint。我無法理解,並且無法從調試或事件查看器等推斷出什麼是在我將這些代碼部署到服務器上時,在上述代碼中傳遞的憑據。

在使用表單認證之前,它會通過打開IE窗口的用戶的Windows憑據嗎?它是否會傳遞運行asp.net組件的帳戶的憑證,即我正在運行的AppPool的帳戶,還是會傳遞其他內容?

我似乎無法讓Sharepoint返回任何文件,我猜這是因爲傳遞的憑據無法訪問文件共享。

感謝 安迪

回答

1

爲了得到這個工作很快就可以與您的用戶名密碼&訪問SharePoint Web服務。這顯然不是長期的最佳解決方案。

設置在SharePoint Web服務代理憑據屬性您的用戶名密碼&:

spProxy.Credentials = new NetworkCredential("username", "password", "domain"); 

你需要確保憑證屬性設置調用Web服務之前。

我不是SharePoint專家(我只用它作爲開發人員),但我相信它只使用Windows身份驗證來保護Web服務。因此,如果您想以登錄用戶的身份訪問Web服務,表單身份驗證不會幫助您(除非您使用LDAP手動驗證用戶名&的密碼)。 ASP.NET模擬&只有在使用Windows身份驗證時,委派纔有意義。

正如僞代碼所述,您可能需要設置一個特殊帳戶來從Web服務器訪問SharePoint。

+1

謝謝。我應該說我的表單身份驗證不再需要通過Active Directory進行身份驗證,所以理論上我應該能夠處理「真實」用戶(我使用表單身份驗證,因爲用戶需要在機器上登錄應用程序他們可能不會自己登錄) – andrew

+1

我有完全相同的場景。您可以在用戶登錄時存儲用戶名和密碼(可能位於表單故障單中的用戶數據字符串或會話狀態中)。當您準備好調用webservice時,將值放在networkcredential對象中。如果它對你有幫助,請將其標記爲答案。 –

相關問題