2010-04-20 73 views
1

我正在構建一個Sharepoint Web部件,供所有用戶使用,但只能由管理員修改。 Web部件連接到需要憑證的Web服務。我在Web部件的代碼中硬編碼憑證。如何避免Sharepoint webpart中的硬編碼憑據?

query.Credentials = new System.Net.NetworkCredential("username", "password", "domain"); 

query是Web服務類

這可能不是一個好方法的一個實例。關於安全性,網頁的源代碼可供不被允許查看證書的人員使用。

在正常的ASP.net應用程序中,憑證可以寫入web.config並加密。 Web部件沒有關聯的.config文件。整個SharePoint站點有一個應用程序級別的.config文件,但我不想爲單個Web部件修改它。我想知道是否有一個特定於web部件的方式來解決證書問題?假設我們提供該Web部件的WebBrowsable屬性,以便特權用戶可以修改憑據。如果這是可取的,我應該如何使該屬性顯示在密碼(「***」)而不是純文本中?

謝謝。

回答

1

創建customtoolpart,檢查條件一樣SPWeb.UserIsWebAdmin,如果是的話,渲染所需的憑證字段(輸入文本框,文本框蒙面等)。

1

從配置文件的加密部分讀取用戶名和密碼。有關程序化用途的更多信息,請參閱https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/programming-and-development/?p=448

+0

這對一個普通的ASP.net網站很有用。但是對於Web部件,我可能不想將憑據放在整個站點使用的.config文件中。是否有一個webpart特定的解決方案?謝謝。 – Shuo 2010-04-20 22:45:31

+0

-1如果攻擊者可以讀取包含密碼的文件,那麼他們將能夠讀取要用於加密的密鑰。這不是**密碼解決的問題。 – rook 2010-04-20 23:29:44

1

除了上面,你可以在服務器上保存憑證(安全,當然),是它的配置文件符號鏈接中,在已知位置的文件(例如,常見的目錄),甚至(不推薦)在環境中。

這種方法的好處是它允許開發/測試/任何具有不同憑據,並且在開發/測試/等時不干擾生產。

+0

謝謝。一個好的解決方案我想知道文件解決方案是否會導致部署和維護方面的額外努力。我將不得不保持文件和webpart的協調。當由於某種原因移動或刪除文件時,Web部件可能無法正常工作。我希望有一個解決方案來將憑證集成到webpart中。謝謝! – Shuo 2010-04-20 22:50:53

+0

如果您在* nix上運行,則可以將NFS掛載到「憑據」卷。這會給你一個位置更新的好處,以及更多的安全性(掛載只讀等)。 – BryanH 2010-04-22 15:04:56

+0

我喜歡網頁的appSettings部分。配置爲此目的,請參閱http://msdn.microsoft.com/en-us/library/ms228154.aspx。 – user4531 2010-12-14 09:21:45

1

如果您希望Web部件獨立於系統的其他部分,則屬性是最簡單的選項。該方法的主要缺點是無法爲各個屬性設置權限,因此用戶將看到它。您可以將該值設置爲散列值(在添加Web部件之前由管理員在別處計算),但我認爲我不認爲這是一個好的解決方案。

如果您只想爲管理員提供ui,您應該創建一個自定義設置頁面(CustomAction +佈局頁面),該頁面將憑據保存在網站媒體資源中,可能已加密,因此只能通過您的自定義代碼網頁部分和設置頁面。

+0

謝謝。如果我想爲管理員提供憑證屬性,如何確保文本顯示在「*」中?使用custome ToolPane? – Shuo 2010-04-20 23:41:33

+0

如果您的意思是在一個Web部件屬性中,我不確定您獲得了多少控制權 - 我認爲它可以被加密以便它只能被您的Web部件使用,並且用戶是否看到它並不重要。如果你的意思是在自定義設置頁面中,它只是一個標準的.net頁面,你可以使用任何你想要的設計。 – 2010-04-20 23:55:27