【问题标题】:programmatically access sharepoint lists using impersonation使用模拟以编程方式访问共享点列表
【发布时间】:2010-07-07 08:13:35
【问题描述】:

我构建了一个在普通用户帐户下运行的控制台应用程序,以编程方式访问共享点列表。为了访问 Sharepoint 对象,控制台应用程序在 Sharepoint 运行的上下文中模拟用户。模拟成功,但是当我尝试访问任何共享点 SPWeb 对象时,会出现以下错误,如下所示 spWeb.ID = 'spWeb.ID' 引发了“System.Data.SqlClient.SqlException”类型的异常 base {System.Data.Common.DbException} = {"无法打开登录请求的数据库\"WSS_Content_92\"。登录失败。\r\n用户'DOM\USER'登录失败。"}

模拟是否应该允许访问底层数据库,并且我是否需要明确授予当前用户访问权限以授予对共享点列表等的访问权限。

提前致谢

【问题讨论】:

    标签: sharepoint impersonation


    【解决方案1】:

    在控制台或 Windows 应用程序中访问对象模型时 - 当您模拟用户时,将在用户帐户凭据下建立数据库连接 - 因此实际上您必须为每个用户提供相当高级别的权限访问数据库(或者更好地让他们成为拥有这些权限的组的成员)。

    http://technet.microsoft.com/en-us/library/cc721638(office.12).aspx

    这与使用的帐户是 IIS 站点的 AppDomain 帐户的 Web 应用程序不同。

    但是 - 这是一个非常不标准的设置并且充满了安全风险 - 您真的要授予您的用户直接访问该数据库的权限吗?

    我可以建议您重新审视您的设计 - 您想要实现什么目标?

    【讨论】:

    • 即使应用程序池在另一个帐户的上下文中运行,Web 应用程序如何设法使用 NETWORK SERVICE 的凭据。
    【解决方案2】:

    在与应用程序池相同的用户的上下文中运行控制台应用程序就可以了。所以解决方案是使用 runas 命令。

    【讨论】:

    • 嗯,是的,它会的。就像给您在数据库访问权限下运行控制台应用程序的帐户一样。仍然很不清楚您要在这里实现什么目标?
    • 将数据从 Sharepoint 迁移到另一个 DB,现在有意义吗??
    • 为什么需要使用用户凭据访问 SharePoint?
    猜你喜欢
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    相关资源
    最近更新 更多