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