ADFS PowerShell声明规则组合Sytax

时间:2016-07-27 14:35:36

标签: powershell claims-based-identity adfs

使用简单规则取得一些成功后,在ADFS声明规则中出现问题PowerShell SnapIn with:

  1. 如何删除规则。编辑:=>穷人的方式似乎只是定义一个新的空规则集。
  2. 如何在不将所有规则设置为一个命令的情况下附加规则。
  3. 规则内逻辑决策的语法。我的尝试:
  4. 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都使用MFA。

    编辑:我试过以下

    我仍然无法正常工作的是IP地址检查。有没有办法我可以调试看看发生了什么(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
    

    编辑:从记录中了解 规则似乎没问题,因为" .asterix"的正则表达式是正确的。对于过滤的IP,会按预期从外部关闭MFA。但是只要我将其更改为除.asterix之外的任何内容,我都会再次提示您输入MFA。因此,怀疑client-ip声明,查看日志。我看到调用IP在请求上下文头中是可见的,到目前为止一直很好,但在成千上万的跟踪条目中,我还没有看到client-ip声明。我怀疑我必须告诉Office365在我的ADFS-daschboard"编辑Microsoft Identity Platform的声明规则"中转发它。知道我需要准确添加哪个client-ip声明要转发吗?

    修改。可能已解决

    下面显示的帖子有帮助。上面使用的ms-client-ip声明显然仅适用于内部客户端。绝望使我真正看到索赔细节,并从请求上下文中替换x-ms-client索赔与下面的索赔显然有效 - 初始测试成功。

    http://schemas.microsoft.com/2012/01/requestcontext/claims/x-ms-forwarded-client-ip

1 个答案:

答案 0 :(得分:2)

你不能和EXISIS规则AFAIK。

尝试类似:

NOT EXISTS([type ==“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”,value =“true”);

然后:

c1:[type ==“http://schemas.company.com/temp”]&& c2:[type == “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”);'