【问题标题】:How to avoid hard-coded credentials in Sharepoint webpart?如何避免 Sharepoint webpart 中的硬编码凭据?
【发布时间】:2011-02-10 08:46:03
【问题描述】:

我正在构建一个可供所有用户使用但只能由管理员修改的 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 属性,以便特权用户可以修改凭据。如果这是可取的,我应该如何使属性以密码(“***”)而不是纯文本显示?

谢谢。

【问题讨论】:

    标签: security sharepoint web-parts


    【解决方案1】:

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

    【讨论】:

    • 这对于一般的 ASP.net 站点来说是很好的。但是对于 Web 部件,我可能不想将凭据放入整个站点使用的 .config 文件中。是否有特定于 webpart 的解决方案?谢谢。
    • -1 如果攻击者可以读取包含密码的文件,那么他们将能够读取用于加密它的密钥。这不是密码学解决的问题。
    【解决方案2】:

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

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

    【讨论】:

    • 谢谢。一个不错的解决方案。我想知道文件解决方案是否会导致部署和维护方面的额外工作。我必须保持文件和 webpart 的协调。当文件由于某种原因被移动或删除时,Webpart 可能无法工作。我希望有一种解决方案可以将凭证集成到 webpart 中。谢谢!
    • 如果您在 *nix 上运行,您可以 NFS 挂载到“凭据”卷。这将为您提供一个更新位置的好处,以及更高的安全性(只读安装等)。
    • 为此我喜欢 web.config 的 appSettings 部分,请参阅msdn.microsoft.com/en-us/library/ms228154.aspx。
    【解决方案3】:

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

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

    【讨论】:

    • 谢谢。如果我想向管理员提供凭据属性,如何确保文本显示在“*”中?使用自定义工具窗格?
    • 如果您的意思是在 Web 部件属性中,我不确定您获得了多少控制权 - 我认为它可以被加密,以便它只能由您的 Web 部件使用,但它不会用户是否看到它无关紧要。如果您的意思是在自定义设置页面中,它只是一个标准的 .net 页面,您可以使用任何您想要的设计。
    【解决方案4】:

    创建customtoolpart,检查SPWeb.UserIsWebAdmin等条件,如果是,则呈现凭据所需的字段(输入文本框、屏蔽文本框等)。

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 1970-01-01
      • 2022-10-31
      • 1970-01-01
      • 2016-05-11
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      相关资源
      最近更新 更多