Azure用户/组设置的SCIM问题与布尔值有关

0h4hbjxa  于 2023-02-09  发布在  其他
关注(0)|答案(2)|浏览(151)

我已经编写了一个符合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"
        }
    ]
}

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
        }
    ]
}

所以问题是给定的值"False"应该是false
这是Azure的bug还是我遗漏了什么?如果是bug,我应该尝试解析字符串并最终提取布尔值吗?但如果我这样做,我将超出标准。您是如何处理这个问题的?

deyfvvtc

deyfvvtc1#

我还花了很多时间试图弄清楚Azure是否符合SCIM规范,答案是它们不符合。
它们为PATCH请求发送的默认值实际上是字符串,而不是User JSON模式定义的布尔值。
您可以通过以下方式覆盖发送/Map到SCIM架构中的值:
1.进入您的资源调配应用程序

  1. Mappings〉Synchronize Azure Active Directory Users to customappsso(此处的名称在您的目录中可能不同)
    1.查找Switch([IsSoftDeleted], "False", "True", "True", "False")
    1.替换为Switch([IsSoftDeleted], false, true, true, false)
    1.点击OK并保存
    注意,保存后仍会看到布尔值周围的引号,但PATCH请求将被正确发送。
    参见参考x1c 0d1xx 1c 1d 1xx 1c 2d 1x的屏幕截图
js81xvg6

js81xvg62#

使用required SCIM schema的SCIM isn't fully compliant的默认Azure实现。
我发现我可以使用默认的NOT([IsSoftDeleted]),通过使用微软的工作区,它的目标是SCIM兼容补丁操作(返回布尔值而不是字符串的'active'属性)。
这可以通过在租户url输入后附加URL参数**?aadOptscim062020**来实现。

相关问题