AD FS 故障排除:声明规则语法

声明是一个对象对其自身或另一个对象所进行的陈述。 信赖方发出声明。 系统会为它们提供一个或多个值,然后将这些值打包到 Active Directory 联合身份验证服务(AD FS)服务器颁发的安全令牌中。 本文介绍了声明语法和创建。 有关声明颁发的信息,请参阅 AD FS 疑难解答

处理声明规则的方式

声明规则通过使用声明引擎通过声明管道进行处理。 声明引擎是 AD FS 的逻辑组件,用于检查用户提供的传入声明集。 根据每个规则中的逻辑,它生成一组声明。

如何创建声明规则

声明规则是针对 AD FS 中的每个联合信任关系单独创建的。 它们不会跨多个信任共享。 您可以:

声明规则语言的组件

声明规则语言由以下组件组成,由 " =>" 运算符分隔:

  • 条件用于检查输入声明并确定是否应执行规则的颁发语句。 它表示必须计算为 true 才能运行规则正文部件的逻辑表达式。
  • 一个颁发语句。

下面是一个示例:

c:[type == "Name", value == "domain user"] => issue(type = "Role", value = "employee");

此声明具有:

  • 条件c:[type == "Name", value == "domain user"] 评估 Windows 帐户名称是否为域用户的输入声明。
  • 颁发issue(type = "Role", value = "employee") 如果条件为 true,则向具有员工角色的输入声明添加新声明。

有关声明和语法的详细信息,请参阅 声明规则语言的角色

声明规则编辑器

声明规则编辑器在完成声明并选择“ 确定”后执行语法检查。 如果语法不正确,编辑器会通知你。

显示 A D F 管理对话框的屏幕截图,其中显示一条消息,指出自定义声明规则语法无效。

事件日志

尝试使用日志对声明进行故障排除时,最佳方法是查找声明输出。 在事件日志中查找 1000 和 1001 个事件。

显示“事件属性”对话框的屏幕截图,其中显示了 1000 事件 ID 的结果。

创建示例应用程序

还可以创建一个与声明回显的示例应用程序。 例如,可以使用示例应用程序并创建一个具有相同声明的信赖方,该声明与你尝试进行故障排除的声明相同,并查看该应用是否具有该声明的任何问题。

显示浏览器中示例应用程序的屏幕截图。

提供了一个很好的示例 Web 应用。 该应用回显从信赖方收到的声明。 若要使用它,请编辑 web.config 应用:

  • 更改为 https://app1.contoso.com/sampapp 用于托管示例应用的 URL。
  • 更改指向 AD FS 服务器的所有实例 sts.contoso.com
  • 将指纹替换为指纹。
  • 将值decryptionKeyvalidationKey替换为适合你的方案的值。

显示 Visual Studio 中的 Web 配置文件的屏幕截图。

此博客文章 提供了有关设置应用的出色深入说明。