(一)概述

SharePoint权限系统是整个SharePoint体系中一个比较重要的部分,权限系统主要分成两大部分:认证和授权。

认证主要解决的问题是判断登陆者是否合法,以及他究竟是哪一个用户,SharePoint与此相关的对象包括用户和用户组。SharePoint支持多种身份认证方式,从最基本的Windows集成认证到各种表单认证,并且在SharePoint 2010中增加了基于声明(Claim Based)认证方式,以及一些相关服务,允许在同一个网站中使用多种认证方式。不过认证方式的设置不在本书的讨论范围之内。

授权主要解决的问题是判断用户在某个对象(如网站、列表等)上有什么样的权限,换句话说,用户在这个SharePoint网站上能够进行什么样的操作。SharePoint与此相关的对象包括权限、权限级别和权限分配。

在介绍和权限相关的对象模型之前,让我们先来回顾一下SharePoint的授权体系。下面这张图表示了SharePoint中授权体系的结构和关系(这部分内容2010和2007没有本质区别):

从上图中可以看到,在SharePoint权限体系中,处在核心地位的是权限分配(Role Assignments),围绕着权限分配有三组对象:

1、范围(Scopes)

范围指定了在什么对象上分配权限。在SharePoint中,凡是能够分配权限的对象都是直接或间接继承了SPSecurableObject类,关于该类的方法和属性将在后文做详细介绍(在2007中,这些对象实现了ISecurableObject接口,不过实际上在2010中的SPSecurableObject类也是实现了这一接口的)。在SharePoint中,实现了该接口类包括SPWeb、SPList和SPListItem。也就是说,能够在SharePoint中分配权限的对象包括网站、列表、列表条目(当然也包括文档库中的文档,以及列表、文档库中的文件夹)。

默认情况下,SharePoint的权限分配在范围上是有继承关系的。子网站的权限分配与父网站相同,列表的权限分配与其所在网站相同,条目和文档的权限分配与其所在列表和文档库相同,如果包含文件夹的话,文件夹内的条目/文档的权限分配与该文件夹相同。不过,这种继承关系是允许用户打破的(在权限设置页面中,点击“停止继承权限”),在打破继承关系之后,对其父对象进行的任何权限分配上的修改都不再影响到结束继承的子对象;而子对象也可以在任何时候选择重新继承父对象的权限分配——这当然也就意味着子对象本身的权限分配设置都会被销毁,并按照父对象上的设置重新分配权限。

2、用户令牌(User Token)

在SharePoint中,可以被分配权限的用户包括普通用户、SharePoint用户组和AD安全组(相当于ASP.NET Membership中的“角色”)。因此在分配权限的时候,管理员就可以有多种选择(假设用户使用AD进行身份认证):

(1) 直接给某个用户分配权限;

(2) 给某个SharePoint用户组分配权限,并将需要分配权限的用户根据权限不同加入到不同的用户组中(在图3-18所示的SharePoint权限分配的界面中,可以很明显地看到这两种权限分配的方式);

(3) 在AD中将用户加到安全组中,之后把安全组加入到SharePoint中,并分配权限;

(4)将包含了用户的安全组加入到SharePoint用户组中。

在一般的SharePoint项目中,不建议直接为用户分配权限,这样会造成日后权限管理中的混乱和麻烦,所以推荐使用方法(2)至(4)。但是在一些地方,只能将权限设置给具体的用户(如网站集管理员)。

3、权限控制列表(ACL)

SharePoint中的权限控制分为两个层次:权限(Permission)和权限级别(Role Definition)。

权限是指具体的用户行为,例如创建列表条目、查看列表条目、管理网站、创建子网站、审批条目等等。

而权限级别是指按照具体应用所组织起来的一组权限,例如读取、仅查看、参与讨论、完全控制等等,每种权限级别都包括了相同或不同的权限组合。从图3-17中可以看到,在SharePoint中,权限的分配只能透过权限级别来完成。

权限级别是定义在网站中的,默认情况下,子网站的权限级别与父网站定义相同,并继承父网站的定义。当然管理员也可以选择结束掉这种继承关系,其情形与结束权限分配的继承关系类似。不过需要说明的是,如果需要打破权限级别的继承关系,其前提条件就是要先打破权限分配的继承关系。

综上所述,在SharePoint中的授权体系可以归纳性地概括为:在某个对象上,给某个用户(或用户组)分配某一组权限。

SharePoint服务器端对象模型 之 访问用户、用户组和权限(Part 1)的更多相关文章

  1. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)

    本节将会介绍SharePoint中最为常用的一些对象模型,以及如何使用这些对象模型来访问和操作网站中的数据.几乎所有的SharePoint服务器端开发都会涉及到这些内容,因此应着重掌握本节中所介绍的基 ...

  2. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 3)

    (三)遍历 文件系统的遍历是指按照文件夹的层级结构遍历文档库.列表的文件夹和列表条目.遍历主要有三种方式:(1)直接使用文件系统对象模型进行遍历:(2)使用SPDocumentLibrary进行遍历: ...

  3. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)

    (五)列表条目(SPListItem) SharePoint中数据的存储基本上都是通过列表条目来完成(文档库中的文档也是一种特殊的列表条目),因此在SharePoint应用开发中,最终是要和列表条目打 ...

  4. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 4)

    (四)栏/字段 SharePoint中的字段(中文版中叫做"栏")与传统的数据栏类似,也有不同类型的区别,不过SharePoint中内置的栏类型除了按照数据类型(如数字.日期和时间 ...

  5. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 1)

    本节中所阐述的内容,主要适用于SharePoint文档库中的文件和文件夹,以及列表中的文件夹.系统中的其他文件(如_layouts中的文件.配置文件.程序文件等)不在本章节的讨论范围之内.   (一) ...

  6. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)

    (四)列表附件 列表的附件也是文件系统的一部分,它依附于普通列表的列表条目之上(文档库没有附件),它的操作在一些地方和文档库中文档的操作非常类似.   1.附件的读取 一个列表条目的附件可以使用SPL ...

  7. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)

    (二)列表(SPList) 列表是SharePoint中最为重要的数据容器,我们一般保存在SharePoint中的所有数据,都是保存在列表中(文档库也是一种列表),因此列表对象在SharePoint的 ...

  8. SharePoint服务器端对象模型 之 访问网站和列表数据(Part 3)

    (三)视图 与传统意义上的数据视图类似,SharePoint中的列表视图指定了列表中数据的筛选条件.排序条件.分组条件.显示栏/字段.显示条目数.显示样式等内容.在SharePoint中,使用SPVi ...

  9. SharePoint服务器端对象模型 之 访问文件和文件夹(Part 2)

    4.添加文件夹 文件夹的创建方法在文档库和普通列表中稍有不同. 在文档库中,与一般的集合操作相同,直接使用SPFolderCollection的Add(string name)方法即可添加文件夹,例如 ...

随机推荐

  1. 十五、EnterpriseFrameWork框架核心类库之系统启动入口与初始化

    本章内容是讲三种开发模式,web模式.Winform模式和Wcf模式的系统启动入口有什么区别,以及启动后系统初始化的内容:为什么要把这些单独提出来讲一章,因为我觉得本章非常重要,我们都知道程序中的ma ...

  2. 十、EnterpriseFrameWork框架的分层架构及意义(控制器、业务对象、实体、Dao之间关系)

    本章内容主要包括两个方面,一.是框架分层(控制器.业务对象.实体.Dao)的详细说明,二.是对比常用三层结构的区别和优势: 本文要点: 1.框架中的各个分层详细说明 2.对比常用三层结构的区别和优势 ...

  3. 【百度地图学习-一】初始化以及TextOverlay

    一.百度地图的初始化 主要用到三个类: 1.BMapManager:使用地图sdk前需先初始化BMapManager.BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创 ...

  4. QWidget::paintEngine: Should no longer be called

    Qt新手,其实并不知道出现这个问题的本质原因,我的问题在于paintEvent中使用的painter是类的成员而不是临时新建的局部变量,改为使用局部变量问题就消失了.

  5. java攻城狮之路(Android篇)--BroadcastReceiver&Service

    四大组件:activity 显示. contentProvider 对外暴露自己的数据给其他的应用程序.BroadcastReceiver 广播接收者,必须指定要接收的广播类型.必须明确的指定acti ...

  6. 经典信息图表:2013 扁平设计 VS 拟物设计

    inTacto 是一家互动数字公司,由 Alejandro Lazos 和 Sebastian Caramés 成立于2001年.他们刚刚发布一个信息图表:<平面设计 VS 现实主义>.这 ...

  7. 1 Servlet开篇准备

    作者:禅楼望月(http://www.cnblogs.com/yaoyinglong) 1. HTTP协议 HTTP协议是TCP/IP协议的上层协议.TCP负责确保从一个网络节点向另一个网络节点发送的 ...

  8. 二、中间件(middleware)

    1.      中间件(middleware) Django中的中间件主要实现一些附加功能,在request被用户handler处理前,以及用户handler处理后生存的response进行处理.因此 ...

  9. [Solution] 一步一步WCF(1) 快速入门

    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台.整合了原有的windows通讯的 .n ...

  10. [Solution] 1分钟使用log4net

    log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具 官网:http://logging.a ...