2009-01-30 85 views
2

我想确认我的调查结果的权限。对象模型权限

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

为了使用Microsoft.SharePoint.Administration(如主叫SPFarm.Local.Solutions.Add)ASP.NET应用程序内的必须满足以下条件:

  • 呼叫必须以类似RunWithElevatedPrivileges包裹以下内容:

SPSecurity.RunWithElevatedPrivileges(delegate(){要运行的代码});

  • 用户访问ASP.NET页面必须是Farm管理员组的一部分(该页面下_layouts运行)

  • 在应用程序池的在Web应用程序的身份用户问题还必须在农场管理员组

此信息看起来是否正确?

+0

仅供说明:WinForm/Console应用程序在Sharepoint Server上运行?因为OM仅适用于场中的服务器。 – 2009-01-30 13:17:57

回答

2

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

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

2

编辑:与迈克尔的评论相反,我认为这个应用程序不会从SP农场内运行。

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

写一个位于SP场的Web服务并使用OM,然后访问Web服务方法以执行所需的功能,会好得多。

您还可以查看开箱即用的SharePoint Sharepoint Web服务。

RunWithElevatedPrivileges在您的方案中不起作用我不认为它需要退回基础架构,在SP场上执行代码的情况下,它是通常为服务器场管理员帐户的SP应用程序池标识。

我很乐意在所有这些方面予以纠正,但是肯定在我的环境中投资采用非标准和不支持的方法解决问题并不明智。

1

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

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

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

1

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

如果您使用RunWithElevatedPermissions,则运行Web服务的用户无关紧要,因为您正在模拟农场管理员帐户。

你可以另外在网络服务中做你自己的模仿,并冒充你想要的任何用户。

本质上,如果Web服务在给定的应用程序池内运行,那么Web服务将在应用程序池所运行的缩进下运行。这是否澄清事情?

+1

好的 - 接下来我会尝试网络服务。 – 2009-02-11 15:31:20