Business Data Connectivity Service 授权

上次修改时间: 2015年3月9日

适用范围: SharePoint Server 2010

本文内容
后端授权
中间层授权
使用 UserContextFilter 进行后端授权
访问权限受控的元数据对象和可单独保护的元数据对象
权限汇总

您可使用以下两种授权模式之一来控制用户对由 Microsoft Business Connectivity Services (BCS) 管理的数据的访问权:后端授权或中间层授权。

后端授权

如果后端服务器可执行按用户授权,则您可使用后端授权来控制用户访问。您可在下列情况下使用后端授权:

  • 您使用模拟和委派模型进行身份验证,且后端服务器上可以按用户授权。在模拟和委派模型中,客户端将身份验证委派给中间层,由中间层模拟客户端并代表客户端向后端服务器进行身份验证。但是,如果后端服务器不支持按用户授权,则您可能必须使用本主题中后面介绍的其他授权机制。

  • 后端服务器支持按用户授权,且您使用的是应用程序级授权,将用户名传入 Username 筛选器。

  • 后端服务器提供连接池或其他性能优点。

中间层授权

在受信任子系统身份验证模式中,中间层以固定身份向后端服务器进行身份验证,且后端服务器从不知道用户的身份。因此,如果您使用此身份验证模式,则即使后端服务器支持按用户授权,您仍无法使用后端授权,因为服务器无法授权每个用户。

在此类情况下,请改用 Business Data Connectivity (BDC) Service 中间层授权。BDC 专门用来在中间层执行按用户授权。此授权模式提供以下好处:

  • 数据库连接池。

  • 单个授权模式。

  • 支持后端服务器上没有按用户授权的方案。

  • 细化访问控制。利用 BDC,可在以下级别设置访问控制列表 (ACL):

    • MetadataCatalog   这是 BDC 中的顶级对象,它控制可在 BDC 中导入或导出模式的人员。

    • LobSystem

    • Entity

    • Method

    • MethodInstance

    此外,您可具有 BDC 中的实体的不同视图。因此,您可控制用户可查看的字段。

使用 UserContextFilter 进行后端授权

UserContextFilter 筛选器告知 BDC 将当前用户的名称添加到后端方法调用中。然后,后端方法可使用该用户名来检查用户的访问权,或按照当前用户的上下文限制从后端服务器返回的实体实例。

当后端应用程序没有授权信息或因授权或连接池原因未使用该信息时,这将特别有用。在此类情况下,它们可使用组帐户来进行身份验证,并使用传入用户名来确定和控制对数据的访问权。

使用 UserContext 筛选器的另一种方案可能是:元数据作者创建了将用户名用作用户可控制的筛选器的元数据,并返回敏感的个人数据;在此情况下,某个用户可能会看到其他用户的数据。为了避免出现此情况,您可使用 UserContext 筛选器将用户名传入方法调用。

备注

UserContext 筛选器是安全的,并且不能重写筛选值。

对于 Windows 用户,BDC 会按域名\用户名 格式传递 System.Security.Principal.WindowsPrincipal.Identity 属性。

访问权限受控的元数据对象和可单独保护的元数据对象

元数据对象(Application、Entity、Method、MethodInstance、Parameter、TypeDescriptor 等)的 BDC 层次结构中的每个对象都具有一个 ACL,它指定哪些主体对该对象具有哪些权限。在 13 个元数据对象中,仅 LobSystem、Entity、Method 和 MethodInstance 拥有自己的可单独控制的 ACL。这些对象称作可单独保护的元数据对象。其他元数据对象从其直接父级继承 ACL,并称作访问权限受控的元数据对象。

权限汇总

下表显示管理员或具有管理权限的人员可对 BDC 应用程序设置的权限。

重要注释重要说明

在更改 BDC 中的用户权限之后,您必须重新运行爬网以使其能够搜索业务数据。这是因为 ACL 是使用数据进行爬网的,因此如果您更改它们,它们将会过期。

表 1. 可对 BDC 应用程序设置的权限的摘要

权限

适用于

说明

编辑

访问权限受控的元数据对象

  • 更新对象

  • 删除对象

  • 创建子对象

  • 添加属性

  • 移除属性

  • 清除属性

  • 添加本地化显示名称

  • 移除本地化显示名称

  • 清除本地化显示名称

设置权限

可单独保护的元数据对象

  • 设置权限

  • 将权限复制到子级

执行(查看)

MethodInstance

  • 通过各种运行时 API 调用执行 MethodInstance 对象

在客户端中可选

应用程序和实体

  • 在 Web 部件和列表中使用

  • 在选取器中查看