声明规则的角色

Active Directory 联合身份验证服务 (AD FS) 中的联合身份验证服务总体功能是颁发一个包含声明集的令牌。 AD FS 接受哪些声明,然后发出哪些声明,相关决定是由声明规则控制的。

什么是声明规则?

声明规则表示接受一个或多个传入声明、向其应用条件 (if x then y) 并基于条件参数生成一个或多个传出声明的业务逻辑的实例。 有关传入和传出声明的详细信息,请参阅“声明的角色”

当需要实现的业务逻辑会通过声明管道控制声明流时,可以使用声明规则。 虽然声明管道在更多程度上是用于对声明进行流处理的端到端过程的逻辑概念,但是声明规则是可以用于通过声明颁发过程自定义声明流的实际管理元素。

有关声明管道的详细信息,请参阅“声明引擎的角色”

声明规则提供了以下好处:

  • 为管理员提供了一种机制,用于应用运行时业务逻辑来信任来自声明提供方的声明

  • 为管理员提供了一种机制,用于定义向信赖方发布的声明

  • 向要允许或拒绝对特定用户的访问的管理员提供丰富且详细的基于声明的授权功能

处理声明规则的方式

声明规则使用“声明引擎”通过声明管道进行处理。 声明引擎是联合身份验证服务的一个逻辑组件,它检查用户提供的传入声明集,然后根据每个规则中的逻辑生成输出声明集。

声明规则引擎与给定联合信任相关联的声明规则集结合在一起可确定是传入声明在由联合身份验证服务作为传出声明发出之前,是应按原样传递、进行筛选以满足特定条件的标准还是转换为全新的声明集。

有关此过程的详细信息,请参阅声明引擎的角色

什么是声明规则模板?

AD FS 包括一组预定义的声明规则模板,旨在帮助你轻松选择和创建最适合于你的特定业务需求的声明规则。 声明规则模板仅在声明规则创建过程中使用。

在 AD FS 管理管理单元中,只能使用声明规则模板创建规则。 使用该管理单元选择声明规则模板、输入规则逻辑的所需数据并将它保存到配置数据库之后,它会(从此以后)在 UI 中称为声明规则。

声明规则模板的工作原理

从表面上看,声明规则模板似乎只是管理单元提供的输入表单,用于对传入声明收集数据和处理特定逻辑。 但是,在详细得多的级别,声明规则模板存储所需的声明规则语言框架,组成使你可以快速创建规则(无需熟悉语言)所需的基本逻辑。

在用户界面 (UI) 中提供的每个模板都表示基于最常需要的管理任务的预填充声明规则语言语法。 但是有一个规则模板例外。 此模板称为自定义规则模板。 对于此模板,没有预填充任何语法。 而是必须使用声明规则语言语法,在声明规则模板表单的正文中直接创作声明规则语言语法。

有关如何使用声明规则语言语法的详细信息,请参阅《AD FS 部署指南》中的声明规则语言的角色

提示

可以通过在声明规则的属性上单击“查看规则语言”按钮,随时查看与规则关联的声明规则语言。

如何创建声明规则

声明规则对于联合身份验证服务中的每个联合信任关系单独进行创建,不在多个信任间共享。 可以从声明规则模板创建规则、通过使用声明规则语言创建规则来从头开始或是使用 Windows PowerShell 自定义规则。

所有这些选项共存,使你可以灵活地选择适合于给定方案的方法。 有关如何创建声明规则的详细信息,请参阅《AD FS 部署指南》中的配置声明规则

使用声明规则模板

声明规则模板仅在声明规则创建过程中使用。 可以使用以下任何模板来创建声明规则:

  • 通过或筛选传入声明

  • 转换传入声明

  • 以声明方式发送 LDAP 属性

  • 以声明方式发送组成员身份

  • 使用自定义规则发送声明

  • 根据传入声明允许或拒绝用户

  • 允许所有用户

有关每个声明规则模板的详细信息,请参阅确定要使用的声明规则模板的类型

使用声明规则语言

对于超出标准声明规则模板范围的业务规则,可以使用自定义规则模板表示一系列复杂的逻辑条件(使用声明规则语言)。 有关使用自定义规则的详细信息,请参阅何时使用自定义声明规则

使用 Windows PowerShell

还可以将 ADFSClaimRuleSet cmdlet 对象与 Windows PowerShell 结合使用以在 AD FS 中创建或管理规则。 有关如何将 Windows PowerShell 与此 cmdlet 结合使用的详细信息,请参阅借助 Windows PowerShell 的 AD FS 管理

什么是声明规则集?

如下图所示,声明规则集是用于给定联合信任的一个或多个规则的分组,会定义声明规则引擎处理声明的方式。 当联合身份验证服务收到传入声明时,声明规则引擎会应用由适当声明规则集指定的逻辑。 由集中每个规则的逻辑的最终总和来确定如何从整体上为给定信任发出声明。

AD FS roles

声明规则由声明引擎按给定规则集内的时间顺序处理。 此顺序非常重要,因为一个规则的输出可能会用作集中下一个规则的输入。

什么是声明规则集类型?

声明规则集类型是联合信任的一个逻辑段,可明确标识与信任关联的声明规则集是用于声明发出、授权还是接受。 每个联合信任都可以具有相关联的一种或多种声明规则集类型(具体取决于所使用的信任类型)。

下表介绍各种类型的声明规则集并说明其与声明提供方信任或信赖方信任的关系。

声明规则集类型 说明 用于
接受转换规则集 对特定声明提供方信任使用的声明规则集,用于指定从声明提供方组织接受的传入声明和发送到信赖方信任的传出声明。

用作此规则集来源的传入声明会是由声明提供方组织中指定的发出转换规则集输出的声明。

默认情况下,声明提供方信任节点包含名为“Active Directory”的声明提供方信任,它用于表示接受转换规则集的源属性存储。 此信任对象用于表示从联合身份验证服务到网络上的 Active Directory 数据库的连接。 此默认信任是为由 Active Directory 进行了身份验证的用户处理声明的对象,无法删除。

声明提供方信任
发出转换规则 对信赖方信任使用的声明规则集,用于指定向信赖方发出的声明。

用作此规则集来源的传入声明最初会是由接受转换规则集输出的声明。

信赖方信任
发出授权规则集 对信赖方信任使用的声明规则集,用于指定允许接收信赖方的令牌的用户。

这些规则确定用户是否可以接收有关信赖方的声明,从而访问该信赖方。

除非指定发出授权规则,否则默认情况下会拒绝所有用户访问。

信赖方信任
委派授权规则集 对信赖方信任使用的声明规则集,用于指定允许充当其他用户对信赖方的代理人的用户。

这些规则可确定是否允许请求者模拟用户,同时仍在发送到信赖方的令牌中标识请求者。

除非指定委派授权规则,否则默认情况下没有用户可以当代理人。

信赖方信任
模拟授权规则集 可以使用 Windows PowerShell 配置的声明规则集,用于确定用户是否可以向依赖方完全模拟其他用户。

这些规则可确定是否允许请求者模拟用户,而不在发送到信赖方的令牌中标识请求者。

采用这种方式模拟另一位用户是一项非常强大的功能,因为信赖方不知道被模拟的用户。

信赖方信任

有关选择要在组织中使用的相应声明规则的详细信息,请参阅确定要使用的声明规则模板的类型