对象模型权限

时间:2009-01-30 13:15:15

标签: sharepoint sharepoint-2007

我正在尝试确认我对权限的调查结果。

为了从控制台应用程序或WinForm应用程序访问SharePoint对象模型,运行应用程序的用户必须具有对相关Web应用程序的内容数据库的db_admin权限。

为了在ASP.NET应用程序中使用Microsoft.SharePoint.Administration(如调用SPFarm.Local.Solutions.Add),必须满足以下条件:

  • 调用必须使用RunWithElevatedPrivileges包装,如下所示:

SPSecurity.RunWithElevatedPrivileges(delegate(){code to run});

  • 访问ASP.NET页面的用户必须是Farm Adminstrators Group的一部分(该页面在_layouts下运行)

  • 相关网络应用程序的应用程序池标识中的用户也必须位于Farm Adminstrators Group

此信息看起来是否正确?

4 个答案:

答案 0 :(得分:2)

编辑:与Michael的评论相反,我认为此应用程序不会在SP服务器场内运行。

我根本不推荐这种方法,因为它是一种不受支持的使用SharePoint OM的方法。

最好不要编写位于SP服务器场并使用OM的Web服务,然后访问Web服务程序以执行所需的功能。

您还可以查看开箱即用的sharepoint网络服务。

RunWithElevatedPrivileges在你的场景中不起作用我不认为因为它需要一个基本的不确定性,在SP场上执行代码的情况下,SP App Pool身份通常是一个场管理员帐户。

我很高兴能够在所有这些方面得到纠正,但在我的环境中投资一个非标准且不受支持的问题方法是不明智的。

答案 1 :(得分:2)

是的但是在Web服务代码中,您使用RunWithElevated Privileges调用功能代码,这会绕过您运行Web服务的身份,而是使用SPFarmAdmin用户来执行代码。

或者在应用程序池中托管Web服务,该应用程序池使用与您的中央管理站点相同的域帐户,并允许匿名访问Web服务。这对于内部使用是安全的,并且意味着Web服务始终具有提升的权限。

答案 2 :(得分:1)

是的,Web服务需要适当的访问权限,但使用本地运行的Web服务更容易控制。

但是,如果您说应用程序始终在服务器上运行,那么使用RunWithElevatedPrivileges将解决任何权限问题,因为您实际上将该代码作为SPFarmAdmin运行(只要正确配置了应用程序池标识)。

注意:您可以将此方法用于定制Web服务或客户端应用程序(如控制台应用程序或Windows窗体)。

答案 3 :(得分:1)

道歉爱好者,我从没见过你的回复。

如果您使用RunWithElevatedPermissions,那么Web服务运行的用户并不重要,因为您是有效的模拟服务器场管理员帐户。

您还可以在Web服务中进行自己的模拟,并模拟您想要的任何用户。

基本上,如果Web服务在给定的应用程序池中运行,那么Web服务将在应用程序池运行的缩进下运行。这会澄清事情吗?