如何避免Sharepoint webpart中的硬编码凭据?

时间:2010-04-20 22:10:07

标签: security sharepoint web-parts

我正在构建一个将由所有用户使用的Sharepoint Web部件,但只能由管理员修改。 Web部件连接到需要凭据的Web服务。我在Web部件的代码中对凭证进行了硬编码。

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

query是Web服务类的实例

这可能不是一个好方法。关于安全性,不允许查看凭证的人可以使用Web分开的源代码。

在普通的ASP.net应用程序中,凭据可以写入web.config并加密。 Web部件没有关联的.config文件。整个sharepoint站点都有一个应用程序级.config文件,但我不想为单个webpart修改它。我想知道是否有一个特定于webpart的方法来解决凭据问题?假设我们提供该Web部件的WebBrowsable属性,以便特权用户可以修改凭据。如果这是可取的,我应该如何使用密码(“***”)而不是纯文本显示属性?

感谢。

4 个答案:

答案 0 :(得分:1)

从配置文件的加密部分读取用户名和密码。有关程序化使用的详细信息,请参阅https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/programming-and-development/?p=448

答案 1 :(得分:1)

除了上述内容之外,您还可以在服务器上存储凭证(当然是安全的),无论是配置文件符号链接,还是已知位置的文件(例如,公共目录),甚至(不推荐)环境。

这种方法的一个好处是它允许dev / test /具有不同的凭据,并且在开发/测试/等时不会干扰生产。

答案 2 :(得分:1)

如果您希望Web部件独立于系统的其他部分,则属性是最简单的选项。该方法的主要缺点是您无法为各个属性设置权限,因此用户将看到它。您可以将值设为哈希值(在添加Web部件之前由管理员在其他地方计算)但我认为我不认为这是一个很好的解决方案。

如果您只想向管理员提供ui,您应该创建一个自定义设置页面(CustomAction +布局页面),该页面将凭据保存在站点属性中,可能已加密,以便只能通过自定义代码读取它们。网页部分和设置页面。

答案 3 :(得分:1)

创建custom toolpart,检查SPWeb.UserIsWebAdmin之类的条件,如果是,请提交凭据所需的字段(输入文本框,屏蔽文本框等)。