ADFS PowerShell 声明规则组合语法
ADFS PowerShell Claims Rule Combination Sytax
在使用简单规则取得一些成功后,在 ADFS 声明规则 PowerShell 管理单元中遇到问题:
- 如何删除规则。编辑:=> 穷人的方式似乎只是定义一个新的空规则集。
- 如何在不在一个命令中设置所有规则的情况下附加规则。
- 规则中逻辑决策的语法。我的尝试:
Set-AdfsAdditionalAuthenticationRule -AdditionalAuthenticationRules 'c1:[type ==
"http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] &&
(NOT EXISTS([type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-ip",
Value =~ "^(?i)2003:6a:7d12:3f58:148:f23:cdc4:4181$"]))
=> issue(type =
"http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value =
"http://schemas.microsoft.com/claims/multipleauthn" );'
无论我做什么,都会在 "NOT EXISTS" 处产生错误。非常感谢任何帮助。这个想法是要求除 IP(正则表达式)列表中的 IP 之外的所有外部 IP 使用 MFA。
编辑:我尝试了以下方法
我唯一无法开始工作的是 IP-address 检查。有没有一种方法可以调试以查看发生了什么(找到 ip 或正则表达式的结果等)?
$RhtMfaClaimRule = 'NOT EXISTS([type ==
"http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-ip", Value =~ "^(?i)81.151.139.145$"]) => add(type = "http://schemas.company.com/temp", value = "true" );
c1:[type == "http://schemas.company.com/temp"] &&
c2:[type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] => issue(type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value = "http://schemas.microsoft.com/claims/multipleauthn" );'
Set-AdfsAdditionalAuthenticationRule $RhtMfaClaimRule
编辑:从日志中学习
规则似乎没问题,因为过滤 IP 的正则表达式“.asterix”按预期关闭了来自外部的 MFA。但是,一旦我将其更改为除 .asterix 之外的任何内容,我就会再次收到 MFA 提示。因此,怀疑 client-ip 声明,查看日志。我看到调用 IP 在请求上下文 header 中可见,到目前为止还不错,但是在数千个跟踪条目中,我还没有看到 client-ip 声明。我怀疑我必须告诉 Office365 将其转发到我的 ADFS-daschboard "Edit Claim rules for Microsoft Identity Platform" 中的某处。知道我需要在那里准确添加什么才能转发此 client-ip 声明吗?
编辑。可能已解决
下面显示的帖子有所帮助。上面使用的 ms-client-ip 声明显然仅适用于内部客户。绝望让我真正查看了声明的详细信息,并用请求上下文中的以下声明替换 x-ms-client 声明显然起到了作用——初始测试成功。
http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip
你不能并且存在规则 AFAIK。
试试这样的东西:
不存在([类型==“http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-ip”,
值 =~ "^(?i)2003:6a:7d12:3f58:148:f23:cdc4:4181$"]))
=>添加(类型=
"http://schemas.company.com/temp", 值="true");
然后:
c1:[type == "http://schemas.company.com/temp"] &&
c2:[类型==
“http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork”,值=="false"]
=>问题(类型=
“http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod”,值=
“http://schemas.microsoft.com/claims/multipleauthn”);'
在使用简单规则取得一些成功后,在 ADFS 声明规则 PowerShell 管理单元中遇到问题:
- 如何删除规则。编辑:=> 穷人的方式似乎只是定义一个新的空规则集。
- 如何在不在一个命令中设置所有规则的情况下附加规则。
- 规则中逻辑决策的语法。我的尝试:
Set-AdfsAdditionalAuthenticationRule -AdditionalAuthenticationRules 'c1:[type ==
"http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] &&
(NOT EXISTS([type == "http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-ip",
Value =~ "^(?i)2003:6a:7d12:3f58:148:f23:cdc4:4181$"]))
=> issue(type =
"http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value =
"http://schemas.microsoft.com/claims/multipleauthn" );'
无论我做什么,都会在 "NOT EXISTS" 处产生错误。非常感谢任何帮助。这个想法是要求除 IP(正则表达式)列表中的 IP 之外的所有外部 IP 使用 MFA。
编辑:我尝试了以下方法
我唯一无法开始工作的是 IP-address 检查。有没有一种方法可以调试以查看发生了什么(找到 ip 或正则表达式的结果等)?
$RhtMfaClaimRule = 'NOT EXISTS([type ==
"http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-ip", Value =~ "^(?i)81.151.139.145$"]) => add(type = "http://schemas.company.com/temp", value = "true" );
c1:[type == "http://schemas.company.com/temp"] &&
c2:[type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] => issue(type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value = "http://schemas.microsoft.com/claims/multipleauthn" );'
Set-AdfsAdditionalAuthenticationRule $RhtMfaClaimRule
编辑:从日志中学习 规则似乎没问题,因为过滤 IP 的正则表达式“.asterix”按预期关闭了来自外部的 MFA。但是,一旦我将其更改为除 .asterix 之外的任何内容,我就会再次收到 MFA 提示。因此,怀疑 client-ip 声明,查看日志。我看到调用 IP 在请求上下文 header 中可见,到目前为止还不错,但是在数千个跟踪条目中,我还没有看到 client-ip 声明。我怀疑我必须告诉 Office365 将其转发到我的 ADFS-daschboard "Edit Claim rules for Microsoft Identity Platform" 中的某处。知道我需要在那里准确添加什么才能转发此 client-ip 声明吗?
编辑。可能已解决
下面显示的帖子有所帮助。上面使用的 ms-client-ip 声明显然仅适用于内部客户。绝望让我真正查看了声明的详细信息,并用请求上下文中的以下声明替换 x-ms-client 声明显然起到了作用——初始测试成功。
http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip
你不能并且存在规则 AFAIK。
试试这样的东西:
不存在([类型==“http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-client-ip”, 值 =~ "^(?i)2003:6a:7d12:3f58:148:f23:cdc4:4181$"])) =>添加(类型= "http://schemas.company.com/temp", 值="true");
然后:
c1:[type == "http://schemas.company.com/temp"] && c2:[类型== “http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork”,值=="false"] =>问题(类型= “http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod”,值= “http://schemas.microsoft.com/claims/multipleauthn”);'