ADFS 声明规则中的正则表达式否定展望

Regex Negative look ahead in ADFS claim rule

我需要向不匹配特定 LDAP 属性的每个人授予声明。我想使用具有负面前瞻性的正则表达式来执行此 "not" 子句

c1:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", Value =~ "^(?!Test User).*$"]
 => issue(Type = "http://goofyclaim", Value = "youre not a tester");

我的测试用户似乎不满意上述规则。正则表达式有问题吗?还是ADFS4.0不支持。我在 ADFS 事件日志中没有看到任何错误。

这是 win2012r2 AD 域上的 win2016srv。

供参考,这条规则确实有效:

c1:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", Value =~ "(?i)^Test User1"]  
 => issue(Type = "http://somethignelseentreily", Value = "imispellwhendriving");

首先我需要使用(在此处 ADFS rules language terminals 找到)REGEXP_NOT_MATCH

!~

接下来,我不得不通过在 ^ 标识符中不区分大小写来稍微重构正则表达式模式修饰符

c1:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", Value !~ "^(?i)Test User"]
 => issue(Type = "http://somethignelseentreily", Value = "imispellwhendriving");

(留下我的其他答案,以便其他人可以看到它不是 right 答案)

NOT EXISTS([Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name", Value =~ "^Test User"])
 => issue(Type = "http://somethignelseentreily", Value = "all");