2011-08-31 140 views
0

假设我在SharePoint站点中有2个页面。我们称他们为页面A和B.我们使用基于Windows的身份验证机制。比方说,我有2个已经过身份验证的用户X & Y.对于在活动目录中将某些属性设置为1的用户,页面A应该是可见的。页面B只应该对那些没有设置该属性的用户可见。我们称这个属性为SpecialUser。如果特定用户的特殊用户为1,则用户应该只能看到页面A而不能成为页面B.如果特殊用户有任何其他值,用户应该只能看到页面B而不是页面A.SharePoint 2010授权问题

在这种情况下,用户X的属性SpecialUser设置为1,而用户Y没有。因此,用户X只应看到页面A,而用户Y只应看到页面B.

活动目录中没有组仅包含SpecialUser属性值设置为1的用户。我们不想创建SharePoint组并手动添加这些用户。

鉴于这些限制,我们如何才能实现此授权?我认为可能需要定制编码。如果需要自定义编码,我该如何去做。如果没有,解决方案是什么?

回答

0

我认为最简单的做法可能是坚持活动目录端。 Sharepoint身份验证可能有点变幻莫测。关于我的头顶,我可能会建议创建一个活动目录组来保存这些用户的列表。你可以不用手动更新它,而是每隔一段时间运行一次服务(每天一次?每小时一次?取决于你愿意进行过时验证的时间长短),并检查活动目录中的用户列表是否存在此标志。该服务然后将更新您用于身份验证的组。

有可能是一种方法,SharePoint开发的城墙内更优雅做到这一点,但我从来没有听说过这样的事情。

1

如果你的Web应用程序可以设置为使用基于声明的模式,而不是经典模式,你应该能够做到这一点无需自定义编码,因为一个Active Directory属性可以设置页面的权限时,可以作为索赔。

否则将需要自定义编码。您可以创建自定义Web部件,将其放置在页面上,可以重定向用户,也可以致电SPUtility.HandleAccessDenied(new UnauthorizedAccessException())查找无效用户。要安全修剪页面(使它们不可见),您需要在显示页面的任何菜单或Web部件中使用类似的逻辑。

如果Active Directory属性是SharePoint用户配置文件的一部分,您可以使用UserProfile类。否则,您可以使用System.DirectoryServices.AccountManagement来检索属性的值。

+1

如果可以使用API​​等访问页面内容,那么添加webpart的方法可能会留下安全漏洞。 –

+0

我面临与我的应用程序类似的问题,是否有任何方法在Sharepoint中引入自定义授权或扩展共享点授权。 –