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")如果条件成立,则会在输入声明中添加角色为员工的新声明。

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

声明规则编辑器

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

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

事件日志

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

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

创建示例应用程序

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

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

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

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

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

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