何时使用发送组成员身份作为声明规则

当你只为作为指定 Active Directory 安全组成员的用户发出新的传出声明值时,可以在 Active Directory 联合身份验证服务 (AD FS) 中使用此规则。 使用此规则时,你只会为与规则逻辑匹配的指定组发出单个声明,如下表中所述。

规则选项 规则逻辑
传出声明值 如果用户的组成员身份等于“指定组”,并且传出声明类型等于“指定声明类型”,则将现有组名称值替换为“指定传出声明值”并发出声明

以下各节提供声明规则的基本简介。 它们还提供有关何时使用发送组成员身份作为声明规则的详细信息。

关于声明规则

声明规则表示使用传入声明、向其应用条件 (if x, then y) 并基于条件参数生成传出声明的业务逻辑的实例。 下面的列表概述了在进一步阅读本主题中的内容之前应了解的有关声明规则的重要提示:

  • 在“AD FS 管理”管理单元中,只能使用声明规则模板创建声明规则

  • 声明规则处理以下两种传入声明:直接来自声明提供程序(如 Active Directory 或另一个联合身份验证服务),或来自声明提供程序信任上的接受转换规则的输出。

  • 声明规则由声明颁发引擎按给定规则集内的时间顺序处理。 通过为规则设置优先级,可以进一步优化或筛选由给定规则集内以前的规则生成的声明。

  • 声明规则模板始终要求你指定传入声明类型。 但是,你可以使用单个规则处理声明类型相同的多个声明值。

有关声明规则和声明规则集的更多详细信息,请参阅声明规则的角色。 有关如何处理规则的详细信息,请参阅声明引擎的角色。 有关如何处理声明规则集的详细信息,请参阅声明管道的角色

传出声明值

通过使用发送组成员身份作为声明规则模板,你可以发出取决于用户是否为指定组的成员的声明。

换句话说,此规则模板仅当用户的组安全 ID (SID) 与管理员指定的 Active Directory 组匹配时才会发出声明。 针对 Active Directory 域服务 (AD DS) 进行身份验证的所有用户都具有它们所属的每个组的传入组 SID 声明。 默认情况下,Active Directory 声明提供方信任中的接受转换规则通过这些组 SID 声明进行传递。 使用这些组 SID 作为发出声明的基础比在 AD DS 中查找用户组要快得多。

使用此规则时,仅根据选择的 Active Directory 组发送单个声明。 例如,可以使用此规则模板创建一个规则,该规则在用户是 Domain Admins 安全组的成员时会发送值为“Admin”的组声明。

对声明提供程序信任配置此规则

仅当是从声明提供方接收组 SID(这对于除 Active Directory 或 AD DS 之外的任何声明提供方而言都是非常少见的),管理员才应在声明提供方信任的接受转换规则中使用此规则类型。

如何创建此规则

可在 AD FS 管理管理单元中使用声明规则语言或通过使用发送 LDAP 组成员身份作为声明规则模板,来创建此规则。 此规则模板提供以下配置选项:

  • 指定声明规则名称

  • 使用对象选取器选择用户的组

  • 选择传出声明类型

  • 选择传出名称 ID 格式(仅当从传出声明类型字段中选择名称 ID 时才可用)

  • 指定传出声明值

有关如何创建此规则的详细信息,请参阅创建以声明方式发送组成员身份的规则

使用声明规则语言

如果要基于组 SID 之外的传入 SID 发出声明,请使用“转换传入声明”规则模板。 如果管理员要检索用户所属的所有组的名称,请使用“以声明方式发送 LDAP 属性”规则模板,而不是使用 tokenGroups 属性。

示例:如何基于用户的组成员身份发出组声明

以下规则基于传入组 SID 为用户发出组声明:

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Value == "S-1-5-21-397933417-626991126-188441444-512", Issuer == "AD AUTHORITY"]
=> issue(Type = "http://schemas.xmlsoap.org/claims/Group", Value = "administrators", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, ValueType = c.ValueType);

其他参考

创建规则以声明方式发送 LDAP 属性