在授权管理器中,可以通过下列各种组表示授权策略的接收方:

  • Windows 用户和组。这些组包括安全主体的用户、计算机和内置组。Windows 用户和组在整个 Windows 中使用,而不仅仅用在授权管理器中。

  • 应用程序组。这些组包括基本应用程序组和轻型目录访问协议 (LDAP) 查询组。应用程序组是基于授权管理器角色的管理所特有的。

重要

应用程序组是一组用户、计算机或其他安全主体。应用程序组不是一组应用程序。

  • LDAP 查询组。这些组中的成员身份根据 LDAP 查询需要动态计算得出。LDAP 查询组是一种应用程序组。

  • 基本应用程序组。这些组根据 LDAP 查询组、Windows 用户和组以及其他基本应用程序组进行定义。基本应用程序组是一种应用程序组。

  • 业务规则应用程序组。这些组由 VBScript 或 JScript 编写的脚本定义,并导致组成员身份在运行时根据您定义的标准动态确定。

Windows 用户和组

有关 Active Directory 域服务 (AD DS) 中各组的详细信息,请参阅使用授权管理器对多层应用程序进行基于角色的访问控制 (https://go.microsoft.com/fwlink/?LinkId=64287)(可能为英文网页)。有关未存储在 AD DS 中的安全主体的详细信息,请参阅安全主体技术参考 (https://go.microsoft.com/fwlink/?LinkId=129213)(可能为英文网页)。

应用程序组

创建新的应用程序组时,必须确定该组需要成为 LDAP 查询组还是成为基本的应用程序组。对于基于授权管理器角色的应用程序,还可以使用处理 Windows 用户和组的所有授权处理应用程序组。

不允许循环定义成员身份,这样做会导致错误消息“无法添加 <组名称>。出现下列问题:已检测到循环。”

LDAP 查询组

在授权管理器中,可以使用 LDAP 查询在 AD DS、Active Directory 轻型目录服务 (AD LDS) 以及其他 LDAP 兼容目录中查找对象。

通过在应用程序组“属性”对话框的“查询”选项卡上提供的空白处,键入所需的 LDAP 查询,可以使用 LDAP 查询指定 LDAP 查询组。

授权管理器支持两种类型的 LDAP 查询(可以使用这些查询来定义 LDAP 查询组):授权管理器版本 1 查询和 LDAP URL 查询。

  • 授权管理器版本 1 LDAP 查询

    版本 1 LDAP 查询对 RFC 2255 中描述的 LDAP URL 查询语法提供有限的支持。这些查询仅限于在当前客户端上下文中所指定用户对象的属性列表中进行查询。

    例如,下列查询可以查找除 Andy 外的所有人:

    (&(objectCategory=person)(objectClass=user)(!cn=andy)).

    此查询评估客户端是否为 northwindtraders.com 上 StatusReports 别名的成员:

    (memberOf=CN=StatusReports,OU=Distribution Lists,DC=nwtraders,DC=com)

    授权管理器继续支持版本 1 查询,以便可以轻松地升级使用早期版本的授权管理器开发的解决方案。

  • LDAP URL 查询

    为了取消对可搜索对象和属性的限制,授权管理器支持基于 RFC 2255 的 LDAP URL 查询语法。这允许您创建 LDAP 查询组,该查询组使用目录对象(而不是当前用户对象)作为搜索的根。

    LDAP URL 以协议前缀“ldap”开头并遵循此格式:

注意

可分辨名称也称为 DN。

ldap://<server:port>/<baseObjectDN>?<attributes>?<queryScope>?<Filter>

尤其是,支持下列语法:

       ldapurl    = scheme "://" [hostport] ["/"
                    [dn ["?" [attributes] ["?" [scope]
                    ["?" [filter]]]]]]
       scheme     = "ldap"
       attributes = attrdesc *("," attrdesc)
       scope      = "base" / "one" / "sub"
       dn         = distinguishedName
       hostport   = hostport
       attrdesc   = AttributeDescription
       filter     = filter

例如,以下查询返回其公司属性设置为 "FabCo" 的用户,位置是在主机 "fabserver" 的端口 389 上运行的 LDAP 服务器:

ldap://fabserver:389/OU=Customers,DC=FABCO-PN,DC=com?*?sub?(&(company=FabCo)(objectClass=user)(objectCategory=user))

使用 LDAP URL 查询时,可以使用特殊占位符值 %AZ_CLIENT_DN%。此占位符将由进行访问检查的客户端的可分辨名称 (DN) 替换。从而使您可以构造一些查询,根据对象与进行请求的客户端的可分辨名称的关系从目录中返回对象。

在此示例中,LDAP 查询会测试用户是否是 "Customers" OU 的成员:

ldap://server:<port>/OU=Customers,DC=FABCO-PN,DC=com?(objectclass=*)?sub?(&(objectClass=user)(objectCategory=user) (distinguishedName= %AZ_CLIENT_DN% ))

在此示例中,LDAP 查询会测试用户是否直接报告给名为 "SomeManager" 的经理,并且 SomeManager 的 "searchattribute" 等于特定值 "searchvalue":

ldap://server:port/Cn=SomeManager,OU=Users,DC=FABCO-PN,DC=com?(objectclass=*)?base?(&(searchattribute= searchvalue) (directreports = %AZ_CLIENT_DN%))

有关 LDAP URL 查询语法的详细信息,请参阅 RFC 2255 (https://go.microsoft.com/fwlink/?linkid=65973)(可能为英文网页)中的内容。

重要

如果 LDAP 查询以 "ldap" 开头,则将其视为 LDAP URL 查询。如果以其他任何内容开头,则将其视为版本 1 查询。

基本的应用程序组

基本应用程序组是特定于授权管理器的。

要定义基本的应用程序组成员身份,需要:

  1. 定义谁是成员。

  2. 定义谁不是成员。

执行上面两个步骤时,可以采用相同的方式:

  • 首先,不指定或指定多个 Windows 用户和组、以前定义的基本应用程序组或 LDAP 查询组。

  • 其次,通过删除该组中的所有非成员,计算基本应用程序组的成员身份。授权管理器将在运行时自动执行此操作。

重要

基本应用程序组中的非成员身份优先于成员身份。

业务规则应用程序组

业务规则应用程序组是授权管理器所特有的。

若要定义业务规则应用程序组成员身份,必须以 VBScript 或 JScript 编写脚本。脚本源代码从业务规则应用程序组的“属性”页上的文本文件中加载。


目录