2009-06-15 16 views
0

在某些情況下,使用SharePoint Web服務的我的桌面應用程序以帶有空值的DefaultNetworkCredentials結束,因此調用失敗。然後我需要獲取用戶證書,但我還沒有找到一個很好的方法來做到這一點。DefaultNetworkCredentials具有空值。需要提示用戶...怎麼樣?

我正在考慮實施在http://www.pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html

列出的解決方案......然而,這仍然將需要我處理密碼,我真的寧願不做。我看過,但一直沒能找到一種更直接的方法來提示用戶並直接返回NetworkCredential,而無需存儲密碼?

感謝,

編輯:它看起來像我不會準確地找到我要找的......我會提示用戶自己,當這種情況發生。

但是,如果我正確解釋了這些答案中的一部分,那麼DefaultNetworkCredentials可能是這樣的一個錯誤條件,它首先是這樣的。是這樣嗎?有沒有辦法強制DefaultNetworkCredentials填充,還是真的只是記住用於目標URI(當天?應用程序/會話?)的最後一個域/用戶ID /密碼的簡單緩存。

回答

0

我不認爲你可以避免第一次處理它們。但是,您掛鉤了憑證管理器,以便從這一點開始緩存它們。 Here's an article on how to do that。它在p/invoke中很沉重,但可以爲用戶提供更一致的體驗。

+0

非常感謝。我會試一試。 – Steve 2009-06-18 19:30:50

0

處理底層問題,空憑證而不是嘮叨用戶輸入的信息。

除非您希望他們能夠以不同於他當前帳戶的SharePoint登錄(也許是一個有用的功能)。

.NET有處理憑證的代碼,所以爲什麼第二次猜測,通過走出去的外部DLL的和添加另一個依賴性到您的應用程序?

我對您的環境中存在的代碼安全風險不夠了解,但我認爲只將證書對象存儲在客戶端內存中對大多數情況來說「足夠安全」。

0

我不知道可以爲你處理密碼的東西,但SecureString可能有用。

相關問題