正则表达式ADFS索赔规则中的负向展望

时间:2018-08-29 23:49:45

标签: regex adfs adfs4.0

我需要向每个不匹配特定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");

2 个答案:

答案 0 :(得分:0)

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

!~

接下来,我必须通过使^标识符内的大小写不敏感来稍微修改正则表达式模式修饰符

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

答案 1 :(得分:0)

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

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