2011-10-13 62 views
4

我有一臺SharePoint服務器運行在我的網絡上,我試圖在Delphi中構建一個應用程序,該應用程序允許我訪問託管在那裏的各種SharePoint Web Services如何在Delphi中處理安全Web服務的客戶端身份驗證?

在與SharePoint服務器相同的網絡上運行我的應用程序正常,但是,當我嘗試在不屬於同一個域的部分的VM上運行它時,我無法驗證身份。我正在尋找一些建議,我應該如何處理這種類型的情況下的身份驗證,更具體地說,我應該提示用戶提供他們的憑據,還是有一些內置的安全模型,我可以使用它?

理想情況下,我想嘗試避免處理用戶名&我的應用程序的密碼,並讓操作系統處理這種事情,但是,此刻我似乎無法看到任何其他方式。

+0

首先,您需要知道SharePoint支持哪些身份驗證方法(例如Basic,Digest,NTLM,Kerberos)以及此刻哪個身份驗證方法處於活動狀態。 NTLM不需要用戶交互,但其他域需要是'可信'iirc。基本身份驗證要求應用程序發送用戶名/密碼,因此如果密碼未在某處進行硬編碼,則需要用戶交互。 – mjn

+0

@mjn根據我的理解,當我嘗試訪問Web服務時會發生什麼,我得到一個401,服務器應該使用WWW-Authenticate頭部進行響應,以指示它支持哪種類型的身份驗證。那麼在這一點上,我需要攔截並提示用戶輸入憑據?這裏的目標是允許用戶從任何SharePoint服務器打開文件,無論他們運行我的應用程序的位置如何,因此,可能存在域不「受信任」並且需要模擬的場景。 – James

+0

基本上這是正確的,但爲了提供憑證,可能需要大量的代碼和客戶端/服務器交互步驟,這比現有代碼更容易解​​決。 Internet Direct(Indy)支持NTLM,因此在發送HTTP POST時它將在後臺處理憑據。只需將必要的認證處理程序單元添加到項目中(Indy會自動註冊它們)並使用調試程序查看它的工作範圍。 – mjn

回答

0

經過一番調查後,針對我的特殊情況,我決定最好的方法是使用WinINet。我選擇了這種方法在Indy因爲經過一番深入調查,我發現印確實有一些錯誤&還它沒有我們需要內置的。

支持的WinINet提示憑據&跨線自動驗證所有身份驗證操作。見Handling Authentication

相關問題