Azure 用户/组预配 SCIM 布尔值问题

A. *_* F. 7 azure scim

我编写了一个符合 SCIM 标准的应用程序(https://www.rfc-editor.org/rfc/rfc7644 ),但是与 Azure 集成,我可以看到如果禁用它,它无法更新用户,该请求Azure 发送如下:

PATCH /Users/:id
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:PatchOp"
    ],
    "Operations": [
        {
            "op": "Replace",
            "path": "active",
            "value": "False"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

SCIM 协议“说”该属性active接受布尔值(https://www.rfc-editor.org/rfc/rfc7643#section-4.1.1),因此遵循 PATCH 协议(https://www.rfc- editor.org/rfc/rfc6902#section-4.3)我期望一个布尔值而不是一个内部写入布尔值的字符串,因此预期的请求如下:

PATCH /Users/:id
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:PatchOp"
    ],
    "Operations": [
        {
            "op": "Replace",
            "path": "active",
            "value": false
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

所以问题是给定的值"False"应该是false

这是 Azure 的错误还是我错过了什么?如果这是一个错误,我应该尝试解析字符串并最终提取布尔值吗?但如果我这样做,我就会超出标准。你是如何解决这个问题的?

Mat*_*ipe 6

我还花了很多时间试图弄清楚 Azure 是否符合 SCIM 规范,答案是不符合。

它们为 PATCH 请求发送的默认值确实是字符串,而不是UserJSON 模式定义的布尔值。

您可以通过以下方式覆盖发送/映射到 SCIM 架构中的值:

  1. 进入您的配置应用程序
  2. 映射> Synchronize Azure Active Directory Users to customappsso(此处的名称可能与您的目录中的名称不同)
  3. 寻找Switch([IsSoftDeleted], "False", "True", "True", "False")
  4. 替换为Switch([IsSoftDeleted], , false, true, true, false)(注意附加逗号。)
  5. 点击“确定”并保存

请注意,保存后仍然会看到布尔值周围的引号,但 PATCH 请求将被正确发送。

请参阅屏幕截图以供参考 在此输入图像描述 在此输入图像描述 在此输入图像描述