业务数据目录授权

您可使用以下两种授权模式之一来控制用户对由业务数据目录管理的数据的访问:后端授权或中间层授权。

后端授权

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

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

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

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

中间层授权

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

在此类情况下,请使用业务数据目录中间层授权。业务数据目录专门用来在中间层执行按用户授权。此授权模式具有以下优点:

  • 提供数据库连接池。

  • 提供单个授权模式。

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

  • 提供精细的访问控制。利用业务数据目录,可在以下级别设置访问控制列表 (ACL):

    • 应用程序注册表 这是业务数据目录中的顶级对象,用于控制可将应用程序定义导入业务数据目录中或导出应用程序定义的用户。

    • LobSystem

    • Entity

    • Method

    • MethodInstance

    此外,您可以使用业务数据目录中实体的不同视图,因此,您可控制用户可查看的字段。

使用 UserContextFilter 进行后端授权

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

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

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

备注

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

对于 Microsoft Windows 用户,业务数据目录会以域名\用户名 格式传递 System.Security.Principal.WindowsPrincipal.Identity 属性。对于 Web 客户端,业务数据目录会传递 System.Web.HttpContext.Current.User 属性。

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

元数据对象(Application、Entity、Method、MethodInstance、Parameter、TypeDescriptor 等)的业务数据目录层次结构中的每个对象都具有一个 ACL,指定了不同主体对于对象所具有的权限。在 13 个元数据对象中,仅 LobSystem、Entity、Method 和 MethodInstance 拥有自己的单独可控制的 ACL。这些对象称为可单独保护的元数据对象。其他元数据对象从其上一层父级继承 ACL,则称为访问权限受控的元数据对象。

权限汇总

下表显示了管理员或具有管理权限的人员可对业务数据目录应用程序进行哪些设置权限。

重要

更改了业务数据目录中的用户权限之后,您需要重新运行爬网以使其能够搜索业务数据。这是因为 ACL 与数据一起被爬网,因此如果您更改它们,那么它们将会过期。

权限

适用于

说明

编辑

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

  • 更新对象

  • 删除对象

  • 创建子对象

  • 添加属性

  • 移除属性

  • 清除属性

  • 添加本地化显示名称

  • 移除本地化显示名称

  • 清除本地化显示名称

管理权限

可单独保护的元数据对象

  • 设置权限

  • 将权限复制到子级

执行(查看)

MethodInstance

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

在客户端中可选

应用程序和实体

  • 在 Web 部件和列表中使用

  • 在选取器中查看

See Also

任务

如何:将访问控制项添加到元数据对象

如何:获取元数据对象的访问控制列表

概念

业务数据目录身份验证